ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > DosList Namen ? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
24.01.2008, 17:56 Uhr Der_Wanderer Posts: 1229 Nutzer |
Ich scanne eine DosList durch:code:*doslist.DosList = LockDosList_(flags) If *doslist Repeat *doslist = NextDosEntry_(*doslist,flags) If *doslist name.s = ??? End If Until *doslist = 0 UnLockDosList_(flags) End If Wie komme ich an den namen des Eintrags ? Ziel ist es, wahlweise Device, Assign und Volumenamen (mit flags = LDF_DEVICES, LDF_...) zu finden. Grundsätzlich werden diese auch gefunden, aber ich kann den Namen nicht extrahieren. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
24.01.2008, 18:10 Uhr thomas Posts: 7717 Nutzer |
@Der_Wanderer:code:BSTR dol_Name; /* BPTR to a BSTR formatted name string */ Deine Sprache kann/kenne ich nicht, deshalb mache ich Pseudo-Code: code:string_ptr = doslist->dol_Name * 4; length = string_ptr[0]; name.s = substr(string_ptr,1,length); Alle Indizes beginnen bei 0, also die 1 bei Substr bedeutet das zweite Zeichen (anders als bei Rexx). Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
24.01.2008, 18:14 Uhr Der_Wanderer Posts: 1229 Nutzer |
Ooooaahh! Einen Pointer multiplizieren, da rollt es mir ja die Zehennägel hoch! Aber es funktioniert. Danke Thomas. Sind die String 0 terminiert ? BTW, die Sprache ist Amiblitz. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
24.01.2008, 18:21 Uhr ZeroG Posts: 1487 Nutzer |
@Der_Wanderer:Zitat:Man merkt halt das dos ursprünglich in BCPL geschrieben wurde. Zitat:Nein, darum steht im ersten Byte des Strings die Länge. [ - Antworten - Zitieren - Direktlink - ] |
24.01.2008, 18:25 Uhr thomas Posts: 7717 Nutzer |
@Der_Wanderer:Zitat: BPTR (BCPL Pointer) zeigen auf Langwörter. Um daraus einen Byte-Pointer zu machen, muß man sie halt mit vier multiplizieren. Bei C gibt es dafür das Makro BADDR(), damit kann man die Multiplikation ganz gut verstecken. Zitat: Nein. BCPL-Strings haben im ersten Byte die Länge und dahinter den Inhalt. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
26.01.2008, 17:56 Uhr Der_Wanderer Posts: 1229 Nutzer |
@thomas: Danke für eure Hilfe. BTW, die Strings scheinen unter OS3.9 zur Sicherheit auch 0-terminiert zu sein. Aber keine Angst, ich verlasse mich nicht drauf, sondern mache es korrekt. Nur zur Info. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
26.01.2008, 21:23 Uhr Holger Posts: 8116 Nutzer |
Zitat:Mit Sicherheit hat das nicht viel zu tun, wie Du selbst gesehen hast, kommt man bei falscher Vorgehensweise eh nicht an die Strings. Und wenn man den Pointer korrekt multipliziert, den String aber dann als C-String interpretieren würde, hätte man das Längen-Byte mit im String und würde also auch Unsinn rausbekommen. Der Grund liegt mehr darin, dass der BCPL-Code später durch C-Code ergänzt, bzw. komplett ersetzt wurde, und somit intern C-Routinen mit den Strings hantieren, von denen einige immer ein Null-Byte schreiben. Man kann aber nicht vorhersagen, wann z.B. ein strcopy und wann ein memcopy benutzt wurde, insbesondere, wenn die Einträge z.B. durch völlig unterschiedliche Dateisysteme erzeugt wurden. Insofern ist es schon ganz vorteilhaft, dass Du Dich nicht drauf verlassen möchtest. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
27.01.2008, 19:36 Uhr gni Posts: 1106 Nutzer |
Zitat:dol_Name ist _immer_ NUL-terminiert (sogar unter pre-2.0)! Falls der String nicht NUL-terminiert wäre, dann wäre dies vermutlich ein Bug. [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > DosList Namen ? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |