![]() |
ENGLISH VERSION |
|
![]() |
Links | | | Forum | | | Kommentare | | | News melden |
![]() |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
![]() |
amiga-news.de Forum > Programmierung > Gadtools Strings | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
19.02.2007, 14:45 Uhr MaikG Posts: 5172 Nutzer |
Ich hab da noch so einen Fehler im Zusammenhang mit einem String Gadget. Es schien mir erst so das in dem fall ein Temporärer String reicht, bis zu diesen Fehler. Hab beim GTST_String jetzt einen festen bereich genommen. Tritt aber immernoch auf. Kann also nur noch der Text sein der vor dem Gadget steht. Ein fester String ist natürlich mehr aufwand als ein Temporärer. Die eigentlich frage ist also, wie kann ich erkennen ob ein Fester String benötigt wird oder nicht? Ich hab den 3.9er NDK hier, aber daraus ist das nicht ersichtlich. [ - Antworten - Zitieren - Direktlink - ] |
19.02.2007, 15:14 Uhr thomas Posts: 7717 Nutzer |
Bei GT_SetGadgetAttrs wird GTST_String in einen internen Puffer kopiert, du kannst also einen temporären String benutzen. Bei GT_GetGadgetAttrs bekommst du einen Zeiger auf einen internen Puffer, den du nicht ändern darfst. Hier mußt du also den String in eine eigene Variable kopieren. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
19.02.2007, 15:35 Uhr MaikG Posts: 5172 Nutzer |
>Bei GT_SetGadgetAttrs wird GTST_String in einen internen Puffer >kopiert, du kannst also einen temporären String benutzen. Okay und was ist mit dem Gadget Text(ng_GadgetText)? Und woran erkennt man das generell? Es gibt ja mehrere Systemfunktionen die Strings verwenden die vielleicht dann irgenwann auch so einen schwer zu findenen Fehler verursachen. [ - Antworten - Zitieren - Direktlink - ] |
19.02.2007, 16:10 Uhr thomas Posts: 7717 Nutzer |
Zitat: Gesunder Menschenverstand ? Ich hatte bisher nie Probleme damit. Es hilft natürlich auch, sich mit der Old-Style-Gadgetprogrammierung auseinanderzusetzen. Gadtools ist ja nur ein Layer über der vorhandenen Intuition-Funktionalität. Dann kommst man recht schnell darauf, daß überall, wo in der Gadget-Struktur ein String-Pointer ist, auch ein fester Speicherbereich verwendet werden muß. Und wo wie beim String-Gadget ein Puffer verwendet wird, der auch funktioniert, wenn man keinen String angibt, dann wird wahrscheinlich kopiert. Nunja, bei C ist das vermutlich auch etwas einfacher, weil String-Konstanten dort nunmal Konstanten sind, die ihrem Namen Ehre machen und nicht auf magische Weise aus dem Speicher verschwinden können. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
19.02.2007, 17:42 Uhr Holger Posts: 8116 Nutzer |
Zitat:Ich würde doch lieber auf die Dokumentation statt "gesunden Menschenverstand" plädieren. Auch, wenn Du vielleicht nicht mehr bei jedem Detail sagen kannst, wann und wo Du es zum ersten Mal gelesen hast... Zitat:Auch Basic-Konstanten sind im Allgemeinen Konstanten. Nur fehlt scheinbar die Intelligenz, um "Bla"+CHAR$(0) als compile-time Konstante zu erkennen. In einer richtigen Anwendungen relativiert sich das, weil normalerweise alle UI-Strings aus einem catalog der locale.library stammen und das Handling für Basic und C dabei gleich ist. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
19.02.2007, 18:33 Uhr MaikG Posts: 5172 Nutzer |
>Gesunder Menschenverstand ? Ich hatte bisher nie Probleme damit. Programmierst ja auch in C. Ich dachte das es vielleicht irgendwo steht. Die Basic beispiele sind da irgendwie total dämlich, vermitteln einen das es so Funktionieren soll. Es gibt ja direkt eine Setng_GadgetText Sub, die nichts anders macht als die Adresse des Strings zu übergeben... Beim Textgadget hab ich zum beispiel gesehen das es optional den String kopieren kann. Hab jetzt aber eh alle gegen den Text befehl ausgetauscht. >Es hilft natürlich auch, sich mit der Old-Style-Gadgetprogrammierung >auseinanderzusetzen. Gadtools ist ja nur ein Layer über der >vorhandenen Intuition-Funktionalität. Ich hab nur mit Gadtools angefangen Intuition sah mir nicht schön genug aus... >Auch Basic-Konstanten sind im Allgemeinen Konstanten. Nur fehlt scheinbar die Intelligenz, um "Bla"+CHAR$(0) als compile-time Konstante zu erkennen. Es gibt bei Basic leider nur Numerische Konstanten. Also sollte man möglichst alle Strings fest halten ausser man weiss es genau das es nicht sein muss. Habs jedenfalls schon umgerüstet, funktioniert jetzt. Danke euch. [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Gadtools Strings | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
![]() |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |
![]() |