![]() |
DEUTSCHE VERSION |
|
![]() |
Links | | | Forums | | | Comments | | | Report news |
![]() |
Chat | | | Polls | | | Newsticker | | | Archive |
![]() |
amiga-news.de Forum > Programmierung > DosList Namen ? | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2008-01-24, 17:56 h Der_Wanderer Posts: 1229 User |
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 [ - Answer - Quote - Direct link - ] |
2008-01-24, 18:10 h thomas Posts: 7721 User |
@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/ [ - Answer - Quote - Direct link - ] |
2008-01-24, 18:14 h Der_Wanderer Posts: 1229 User |
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 [ - Answer - Quote - Direct link - ] |
2008-01-24, 18:21 h ZeroG Posts: 1488 User |
@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. [ - Answer - Quote - Direct link - ] |
2008-01-24, 18:25 h thomas Posts: 7721 User |
@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/ [ - Answer - Quote - Direct link - ] |
2008-01-26, 17:56 h Der_Wanderer Posts: 1229 User |
@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 [ - Answer - Quote - Direct link - ] |
2008-01-26, 21:23 h Holger Posts: 8116 User |
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. [ - Answer - Quote - Direct link - ] |
2008-01-27, 19:36 h gni Posts: 1106 User |
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. [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > DosList Namen ? | [ - Search - New posts - Register - Login - ] |
![]() |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved. |
![]() |