DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Search | [ - Search - New posts - Register - Login - ] |
|
||||||
Mazze
User
2004-07-28, 00:25 h [ - Direct link - ] |
topic: ReadPixelArray - Versuchskaninchen gesucht
Board: Programmierung Zitat: Seit mir die Geforce abgeraucht ist, betreibe ich Amithlon mit der ATI im Vesa-Modus. |
|||||
Mazze
User
2004-07-27, 22:10 h [ - Direct link - ] |
topic: system / noixemul
Board: Programmierung Jetzt gehts. Ich musste mit dem AmigaDos-Kommando "path" das Verzeichnis, in dem "sh" steht, einbinden. Ich bedanke mich für eure Hilfe. @ Komiker obw: Wenn man nach einem Fehler sucht, dann gehört die Verwendung von nicht standardmäßigen Tools zu den möglichen Fehlerquellen. Es könnte durchaus sein, dass die VNC-Shell nicht 100% kompatibel zur Shell ist. |
|||||
Mazze
User
2004-07-25, 21:27 h [ - Direct link - ] |
topic: ReadPixelArray - Versuchskaninchen gesucht
Board: Programmierung Bei mir lief der Test durch Amithlon AOS3.9BB2 Gfx: ATI-Rage Pro, Picasso96 |
|||||
Mazze
User
2004-07-25, 21:20 h [ - Direct link - ] |
topic: system / noixemul
Board: Programmierung Wenn ich folgendes in eine Shell eingebe: code:5.Work:CProj> sh # /sys/tools/editpad # sys:tools/editpad dann startet der Editor in beiden Fällen. |
|||||
Mazze
User
2004-07-23, 23:40 h [ - Direct link - ] |
topic: system / noixemul
Board: Programmierung code:5.Work:CProj> c:list env:path No information for "env:path": Objekt nicht gefunden 5.Work:CProj> code:#include <stdlib.h> #include <stdio.h> int main (void) { int r; r = system("/SYS/Tools/EditPad"); printf("Rück %dn", r); r = system("SYS:Tools/EditPad"); printf("Rück %dn", r); return 0; Ohne -noixemul hat r in beiden Fällen den Wert 32512. Ich habe auch schon probiert, statt der VNC-Shell die normale zu nehmen: keine Änderung. |
|||||
Mazze
User
2004-07-22, 21:52 h [ - Direct link - ] |
topic: system / noixemul
Board: Programmierung code:7.Workbench:> dir env:path Could not get information for env:path Objekt nicht gefunden 7.Workbench:> sh # echo $PATH /bin:/usr/bin:/usr/ucb Wie geht es weiter? |
|||||
Mazze
User
2004-07-20, 20:52 h [ - Direct link - ] |
topic: system / noixemul
Board: Programmierung Wenn ich 'system' mit NULL aufrufe, erhalte ich in beiden Fällen das Ergebnis '1'. |
|||||
Mazze
User
2004-07-19, 22:04 h [ - Direct link - ] |
topic: system / noixemul
Board: Programmierung Hi, code:#include <stdlib.h> #include <stdio.h> int main (void) { int r; r = system("EditPad"); printf("Rück %dn", r); return 0; } Dieses Beispiel funktioniert, wenn ich mit "-noixemul" kompiliere. Ohne diese Option wird der Editor nicht gestartet und r den Wert 32512. Ich habe schon versucht, den Linux-Pfad anzugeben (/sys/tools/editpad). Klappt aber nicht. Wie geht es? MFG Matthias |
|||||
Mazze
User
2004-07-11, 10:59 h [ - Direct link - ] |
topic: Gutes oder schlechtes Design?
Board: Programmierung Zu den Frames habe ich folgendes gefunden: Frames Aus eigener Erfahrung kann ich folgendes sagen: mir ist es beim Drucken schon öfters passiert, dass eine leere Seite oder die Navigationsleiste ausgedruckt wurde. Man muss also darauf achten, dass vor dem Drucken der richtige Frame aktiv ist. |
|||||
Mazze
User
2004-06-14, 18:41 h [ - Direct link - ] |
topic: Anzahl der Farben unter Hi/True Color
Board: Programmierung Hmm, dann müssten da 2 Tiefeninformationen vom Screenmode-requester an den Screen übergeben werden. Steckt die echte (16/24/32) Tiefe in der Mode-ID? |
|||||
Mazze
User
2004-06-14, 01:36 h [ - Direct link - ] |
topic: Anzahl der Farben unter Hi/True Color
Board: Programmierung Jetzt bin ich platt. Unter Amithlon ist der Farb-Regler bei 15/32-Bit Screens grau hinterlegt. Aber unter WinUAE kann ich den Farbregler bei allen Modi verstellen. GetBitMapAttr(...depth) liefert aber nicht die eingestellte Tiefe zurück. Um festzustellen, ob ein Paletten- oder ein Trucolor-Screen vorliegt, habe ich bisher immer mit GetBitMapAttr abgefragt, ob die BitMaptiefe größer oder kleiner gleich 8 ist. Sieht das jetzt bei WinUAE anders aus? [ Dieser Beitrag wurde von Mazze am 14.06.2004 editiert. ] |
|||||
Mazze
User
2004-06-13, 18:33 h [ - Direct link - ] |
topic: Anzahl der Farben unter Hi/True Color
Board: Programmierung code:struct ScreenModeRequester { ULONG sm_DisplayID; /* Display mode ID */ ULONG sm_DisplayWidth; /* Width of display in pixels */ ULONG sm_DisplayHeight; /* Height of display in pixels */ UWORD sm_DisplayDepth; /* Number of bit-planes of display */ Welcher Wert steht denn in sm_DisplayDepth? Ich bin jetzt zu faul, um es selbst auszuprobieren. |
|||||
Mazze
User
2004-06-09, 13:41 h [ - Direct link - ] |
topic: stdin und stdout umlenken
Board: Programmierung Danke für die Hinweise, @thomas: hat nicht geklappt. Falls euch interessiert, was ich mache: ich schreibe einen Sourcecodegenerator. Er erstellt aus einer Eingabedatei eine main.c und main.h. Es gibt Parameter zum Library öffnen, Tooltypes auslesen etc Ich mache das jetzt so, dass beim Start von der Workbench für stdin und stdout je ein con-Fenster mit der AUTO-Option geöffnet wird. Es geht hauptsächlich darum, dass Statusausgaben und Debug-Meldungen nicht im NILwana landen. Wenn ein Anwender echte Shell-Funktionalität braucht, muss er sich halt selbst was mit den entsprechenden Betriebssystem-Funktionen basteln. |
|||||
Mazze
User
2004-06-08, 21:18 h [ - Direct link - ] |
topic: stdin und stdout umlenken
Board: Programmierung Hi, ich möchte stdin und stdout auf ein neues con-Fenster umlenken. Bei folgendem Code werden 2 neue Fenster geöffnet. Ich möchte aber, dass Ein- und Ausgabe in *einem* Fenster erscheinen. Geht das? code:#include <stdio.h> int x; int main(void) { freopen("con:40/40/200/200/Out","w",stdout); freopen("con:80/80/200/200/In","r",stdin); scanf("%d", &x); printf("lalalan"); scanf("%d", &x); } Grund ist, dass ein mit vbcc kompiliertes Program kein Konsolen-Fenster öffnet, wenn es von der Workbench gestartet wird. Die Ein- und Ausgabe mit printf und co. landet deshalb im Nirwana. |
|||||
Mazze
User
2004-06-02, 19:00 h [ - Direct link - ] |
topic: Toolbar-Buttons mit Reaction
Board: Programmierung Zitat: Da bleibt Dir wohl nichts andres übrig, als den Text vorher ins Bild reinzumalen. Oder die Texte als Label-Image drunter zu setzen. |
|||||
Mazze
User
2004-06-01, 22:38 h [ - Direct link - ] |
topic: Toolbar-Buttons mit Reaction
Board: Programmierung Zitat:Zitat:ReAction selbst ist auch nicht besonders gut dokumentiert. Im NDK3.9 gibt es die Autodocs zu den ReAction-Klassen/Gadgets/Images. Zitat:Hm, daraus werde ich jetzt nicht schlau, kannst du mal versuchen im Klartext zu beschreiben, was du da machst?code:LAYOUT_AddChild ButtonObject GA_ID ... etc ButtonEnd CHILD_WeightedWidth, 0, CHILD_WeightedHeight,0, [/quote] Wenn man in C eine ReAction-GUI schreibt, kommen 2 Besonderheiten der Sprache C zum Einsatz: Makros und flexible Parameterlisten. Schritt für Schritt würde das etwa so aussehen: code:Object *button1 = NewObject(BUTTON_GetClass(),NULL, GA_ID, 1, GA_Text, "OK", GA_RelVerify, TRUE, TAG_DONE); (GA_RelVerify ist erforderlich, damit ein Event ausgelöst wird, GA_ID steht dann im Event-Loop zur Verfügung) Object *button2 = NewObject(BUTTON_GetClass,NULL, GA_ID, 2, GA_Text, "Cancel", GA_Relverify, TRUE, TAG_DONE); Object *inner_layout = NewObject(LAYOUT_GetClass(),NULL, LAYOUT_AddChild, button1, //button 1 hinzufügen CHILD_WeightedHeight, 0, //Höhe für button1 minimieren LAYOUT_AddChild, button2, // button 2 hinzufügen CHILD_WeightedHeight,0, // Höhe für button2 minimieren TAG_DONE); Object *outer_layout = NewObject(LAYOUT_GetClass(),NULL, LAYOUT_AddChild, inner_layout, CHILD_WeightedHeight, 0, //Höhe für Toolbar minimieren ... weitere Gadgets TAG_DONE); Gewöhnungsbedürftig ist, dass die CHILD...-Attribute zum Layout gehören, sie beeinflußen aber das unmittelbar zuvor erzeugte Gadget Zitat:Die Taskbar soll in der Höhe zusammengestaucht werden. Dazu ist sowohl bei den Buttons als auch beim Layout, in dem die Buttons stehen, WeightedHeight,0 erforderlich.Zitat:Warum? In der Breite hängt es eigentlich nur davon ab, was dir optisch besser gefällt. Mit EvenSize hast Du ja bereits erreicht, dass alle Buttons gleich groß sind. Mit einem WeightedWidth,0 beim Layout könntest Du die Toolbar z.B. in die linke Ecke zwängen. |
|||||
Mazze
User
2004-06-01, 20:40 h [ - Direct link - ] |
topic: Toolbar-Buttons mit Reaction
Board: Programmierung Hallo, hat AWNPipe etwas mit ReAction zu tun? Wenn ich bei ReAction verhindern will, dass sich ein Button beim Vergrößern des Fensters vergrößert, mache ich das so: code:LAYOUT_AddChild ButtonObject GA_ID ... etc ButtonEnd CHILD_WeightedWidth, 0, CHILD_WeightedHeight,0, Wenn sich mehrere Buttons in einem Layout befinden, gebe ich auch beim Layout die Weighted-Parameter an. Die Weighted-Parameter sind eigentlich dazu da, um bei mehreren Gadgets die prozentualen Größenverhältnisse zueinander festzulegen. Bei '0' wird die kleinstmöglichste Größe veranlasst. Nachtrag: Ich habe mir den Screenshot angeschaut. In deinem Fall würde ich nur WeightedHeight angeben. [ Dieser Beitrag wurde von Mazze am 01.06.2004 editiert. ] |
|||||
Mazze
User
2004-05-24, 22:21 h [ - Direct link - ] |
topic: Datatype-Dokumentationen? Fragen?
Board: Programmierung Ich würde es im Prinzip so machen: NewDTObject DoMethod Proclayout GetDTAttr( BitmapHeader, Bitmap Aus dem Bitmapheader Höhe und Breite der Grafik auslesen struct Rasport rp InitRastPort AllocBitmap (IIRC kann man hier das Format angeben, müsste in der Cybergraphics-Doku stehen) RastPort mit Bitmap verknüpfen Datatype-Bitmap in neue Bitmap blitten Das Zeichnen in die Bitmap geht dann mit dem zuvor erzeugten Rastport |
|||||
Mazze
User
2004-05-08, 15:48 h [ - Direct link - ] |
topic: Library erzeugen
Board: Programmierung Ich habe die GGTL* auf den Amiga portiert. Mittlerweile sehe ich keinen großen Sinn mehr darin, eine Runtime-Library zu erzeugen. Ich binde einfach den C-Source eine und erspare mir dadurch den Stress mit Registern, Hooks und Wrappern für Standard-C-Funktionen. Falls sich mal jemand meinen Versuch, eine Runtime-Library zu erzeugen, anschauen will: Download Es ist das Programm test-mergesort, das Fehler meldet. * Generic Game Tree Library. (Library zum Erzeugen von "intelligenten" Spielen wie Othello, Dame, Schach etc.) GGTL Amiga Port Original Linux-Version Es wird wohl noch ein paar Tage dauern, bis es im Aminet erscheint. |
|||||
Mazze
User
2004-05-07, 19:08 h [ - Direct link - ] |
topic: Webbrowsercheck
Board: Programmierung Ich hab's mir mit IE 6 auf W2000 angeschaut und folgenden Unterschied festgesgellt: Bei der Standardversion sind oben 3 waagrechte graue Balken; der mittlere ist mit "Bitte wählen Sie ihr Bundesland" beschriftet. Beim obersten Balken fehlen links und rechts schmale Streifen. Bei der patched-Version sehe ich nur 1 Balken. (Mit Konqueror sieht es genau so aus) |
|||||
Mazze
User
2004-04-29, 23:54 h [ - Direct link - ] |
topic: Library erzeugen
Board: Programmierung Zitat: Gut Zitat: Habe ich nicht gewusst. Allerdings muss ich ein #define setzen, wenn ich ReAction-GUIs erstelle. Dies hat möglicherweise etwas mit den LP-Makros zu tun. Zitat: OK Zitat: OK Zitat:Eine C-Funktion mit einem Pointer als Argument:Zitat:Die Frage verstehe ich nicht. Bsp: void test(void *p) würde ich in einer Library mit den Makros aus Clib-SDI folgendermaßen deklarieren ASM(VOID) LIBtest (REG(a0, APTR p)) Kann ich a0 durch d0-7 ersetzen? Leute, ich stelle das Thema "Library erzeugen" erstmal zurück und binde stattdessen den C-Code direkt ein. Wahrscheinlich habe ich einen Fehler gemacht, den ich erst finde, wenn ich mit etwas zeitlichem Abstand noch mal von vorne anfange. |
|||||
Mazze
User
2004-04-28, 19:51 h [ - Direct link - ] |
topic: Library erzeugen
Board: Programmierung Zitat: Ich programmiere in C und zwar gcc3.3 unter Amithlon/AOS3.9BB2. Wenn ich in einem normalen C-Programm Registervariablen verwende, dann trifft es auf jeden Fall zu, dass die Registerinhalte an einen sicheren Ort gebracht werden. Aber was passiert, wenn ich eine Library-Funktion aufrufe? Weis der C-Kompiler, dass bestimmte Register (Scratch) "hinterrücks" von den Library-Funktionen verändert werden können? Ich habe jetzt mal in der Library die Registerparameter a0 und a1 durch a3 und a5 ersetzt. Jetzt bekomme ich im Test-Programm einen Parse-Error. Als Ursache vermute ich folgendes Makro im Inline-Header: code:#define sl_map(root, func, data) LP3A5(0x3c, APTR, sl_map, APTR, root, a2, struct Hook *, func, a3, APTR, data, d7, , SL_BASE_NAME) Hier fällt zunächst mal auf, dass der 3. Parameter statt auf a5 auf d7 liegt. In meinem inline/macros.h ist kein LP3A5 definiert. Hier klappt offenbar das Zusammenspiel zwischen fd2pragma und gcc nicht. Frage: gibt es einen Unterschied zwischen Adress- und Wert-Register? Kann ich eine Adresse an ein Wert-Register übergeben? Oder muss ich mich übergeben? [ Dieser Beitrag wurde von Mazze am 28.04.2004 editiert. ] |
|||||
Mazze
User
2004-04-27, 19:48 h [ - Direct link - ] |
topic: Library erzeugen
Board: Programmierung Zitat: Angenommen, ich habe in einer Funktion eine Variable auf ein Scratch-Register gelegt. Wenn ich jetzt eine Betriebssystem-Funkion aufrufe, die ihre Parameter ebenfalls auf Scratch-Register leitet, dann wird doch aus einem Call-by-Value ein Call-by-Reference-Aufruf. Sehe ich das richtig? Die Betriebssystem-Funktion kann doch "hintenrum" den Registerwert veränderen. Wie kommt den der Kompiler bzw. Optimizer damit zurecht? |
|||||
Mazze
User
2004-04-25, 19:30 h [ - Direct link - ] |
topic: Zorro?
Board: Amiga, AmigaOS 4 Da ich die Developer CD gerade im Laufwerk habe: * The original "Zorro" name comes from the code name of one of the A1000 prototype boards. The "Zorro" board was the one that followed the "Lorraine," and was the board in the works when much of the expansion specifications were worked up. Since everyone uses the "Zorro" name, and no one's suggested a better name, we've stuck with it. |
|||||
Mazze
User
2004-04-23, 22:50 h [ - Direct link - ] |
topic: Library erzeugen
Board: Programmierung Zitat: Ich habe mich ungenau ausgedrückt. Die Funktion wird absichtlich rekursiv aufgerufen. Ich muss vermutlich non-scratch-Register verwenden. Zitat:Non-Scratch Register werden bei Funktionseintritt gesichert. Noch ein Hinweis: Library-funktionen (auch eigene!) sollten immer relativ zur Librarybasis aufgerufen werden. [/quote] Bei den eigenen Funktionen kenne ich den Prototyp. Aber in den Protos der Systemlibraries taucht doch der Basepointer gar nicht auf? Zum Thema Stack: Übernimmt eine Library den Stack des aufrufenden Programmes? Habe ich überhaupt eine Chance zu verhindern, dass eine Libraryfunktion die Stackgrenze überschreitet? MFG Matthias |
|||||
Mazze
User
2004-04-22, 19:31 h [ - Direct link - ] |
topic: Library erzeugen
Board: Programmierung Hi, im Moment sieht es so aus, dass alles bis auf eine Sortierfunktion funktioniert. Um der Fehlerursache näher zu kommen: Was passiert, wenn sich eine Libraryfunktion rekursiv aufruft? Werden dann die Register gesichert oder muss ich mich selbst darum kümmern? |
|||||
Mazze
User
2004-04-19, 09:57 h [ - Direct link - ] |
topic: Library erzeugen
Board: Programmierung Nach dem ich free durch FreeVec ersetzt hatte, bekam ich bei dieser Funktion den Fehler mit der fehlenden SysBase. Der Fehler tritt nur auf, wenn ich die Funktionsadresse zuweise. ( z. B. func = FreeVec) Beim normalen Aufruf klappt das. Ich habe deshalb die Library-Funktion so umgebaut, dass keine Zuweisung der Funktionsadresse stattfindet. |
|||||
Mazze
User
2004-04-18, 23:17 h [ - Direct link - ] |
topic: Library erzeugen
Board: Programmierung Als Basis für die Library verwende ich CLIB-SDI. Der Linker meldet folgendes: code:5.Work:CProj/ggtl-amiga/src/sl> ed makefile.gcc 5.Work:CProj/ggtl-amiga/src/sl> make -f makefile.gcc gcc -O2 -c -I ../include/C/ -D __NOLIBBASE__ -o libinitgcc.o libinit.c gcc -O2 -c -I ../include/C/ -D __NOLIBBASE__ -o slgcc.o sl.c gcc -noixemul -nostartfiles -s -o ../libs/sl.library libinitgcc.o slgcc.o /gg/lib/gcc-lib/m68k-amigaos/3.3/../../../libnix/libnix.a(free.o)(.tex t+0x2a): undefined reference to 'SysBase' /gg/lib/gcc-lib/m68k-amigaos/3.3/../../../libnix/libnix.a(free.o)(.tex t+0x46): undefined reference to 'SysBase' /gg/lib/gcc-lib/m68k-amigaos/3.3/../../../libnix/libnix.a(free.o)(.tex t+0x52): undefined reference to 'SysBase' /gg/lib/gcc-lib/m68k-amigaos/3.3/../../../libnix/libnix.a(malloc.o)(.t ext+0x18): undefined reference to 'SysBase' /gg/lib/gcc-lib/m68k-amigaos/3.3/../../../libnix/libnix.a(malloc.o)(.t ext+0x4e): undefined reference to 'SysBase' /gg/lib/gcc-lib/m68k-amigaos/3.3/../../../libnix/libnix.a(malloc.o)(.t ext+0x8a): more undefined references to 'SysBase' follow collect2: ld returned 1 exit status So sieht das Makefile aus: code:CFLAGS = -O2 -c -I ../include/C/ -D __NOLIBBASE__ LFLAGS = -noixemul -nostartfiles -s DDIR = ../libs/# the directory, where destination library is stored $(DDIR)sl.library: libinitgcc.o slgcc.o gcc $(LFLAGS) -o $@ libinitgcc.o slgcc.o libinitgcc.o: libinfo.h libinit.c gcc $(CFLAGS) -o $@ libinit.c slgcc.o: libinfo.h sl.c gcc $(CFLAGS) -o $@ sl.c Ich verstehe das nicht. SysBase wird in libinit.c definiert. Da ich aufgrund Holgers's posting free und malloc durch AmigaOs-Funktionen ersetzen werde, löst sich das Problem wahrscheinlich so nebenbei. Trotzdem interessiert mich mal, was hier los ist. [ Dieser Beitrag wurde von Mazze am 18.04.2004 editiert. ] |
|||||
Mazze
User
2004-04-17, 16:27 h [ - Direct link - ] |
topic: Library erzeugen
Board: Programmierung Zitat: Ok. Ich bin nur deshalb etwas vorsichtig, weil es heißt, dass eine Library-Funktion kein "forbid" unterbrechen darf. |
|||||
Mazze
User
2004-04-17, 10:58 h [ - Direct link - ] |
topic: Library erzeugen
Board: Programmierung Ich möchte folgende Funktion in eine Shared-Library einbauen: code:void sl_free(void *root, void (*func)(void*)) { struct sl_node *p; if (func == NULL) func = free; while ((p = sl_pop(&root))) func(p); } Ich bin davon ausgegangen, dass ich Callbacks mit "struct Hook" realisieren muss. Ich habe mir mal den Source der expat.library angeschaut. Dort wird nicht mit "struct Hook" gearbeitet. Wann braucht man "struct Hook"? Kann ich in einer Library die C-Funktion "free" aufrufen? |
|||||
|
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |