ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Open nach Examine schlägt fehl | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
22.08.2007, 15:55 Uhr MaikG Posts: 5172 Nutzer |
Ich habe ein Programm mit Examine ausgestattet um die Dateigröße zu ermitteln. Vorher war das per Seek - und alles hat immer Funktioniert. Nun schlägt das Open sporadisch fehl(ca. 1/30 mal). Kommt das UnLock vielleicht sofort zurück ohne auf beendigung zu warten? Was kann man da machen? Wenn ich jetzt ein Delay reinsetzte hat sich der Geschwindigkeitsvorteil ja wieder erübrigt. code:MyLock&=Lock&(SADD(filename$ + CHR$(0)), ACCESS_READ&) 'laenge ermitteln IF MyLock&<>0 THEN IF Examine(MyLock&, FileInfoBlock&) THEN sbytes&=PEEKL(FileInfoBlock&+fib_Size%) ELSE PRINT "examine fail" UnLock MyLock& ELSE PRINT "Lock fail" END IF stream& = xOpen&(SADD(filename$ + CHR$(0)), MODE_OLDFILE&) 'Datei Oeffnen IF stream& AND sbytes& THEN [ Dieser Beitrag wurde von MaikG am 22.08.2007 um 15:56 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
22.08.2007, 16:08 Uhr Holger Posts: 8116 Nutzer |
Mal unter der Annahme, das sonst alles richtig ist (Konstante fib_Size% etc. das Basic-Problem), steht da:code:Was ist, wenn sbytes& 0 ist? Dateien dürfen durchaus eine Länge von 0 besitzen...IF stream& AND sbytes& THEN ... An einem verzögerten UnLock kann es jedenfall nicht liegen, da ein Lese-Lock und ein Öffnen zum Lesen sich gar nicht ausschließen. Abgesehen davon, kann ich nur immer wieder sagen, dass es sich lohnt, sich mit dem API von AOS2.0 (oder höher) zu beschäftigen... BASIC code:MyLock&=Lock&(SADD(filename$ + CHR$(0)), ACCESS_READ&) 'laenge ermitteln IF MyLock& THEN IF Examine(MyLock&, FileInfoBlock&) THEN sbytes&=PEEKL(FileInfoBlock&+fib_Size%) stream& = OpenFromLock&(MyLock&) 'Datei Oeffnen IF stream& THEN REM hier kommt der Rest von Deinem Programm... xClose stream& ELSE PRINT "Open fail" UnLock MyLock& END IF ELSE PRINT "examine fail" UnLock MyLock& END IF ELSE PRINT "Lock fail" END IF mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
22.08.2007, 16:18 Uhr MaikG Posts: 5172 Nutzer |
>Was ist, wenn sbytes& 0 ist? Dann passiert gar nichts, programm würde abstürzen wenn ich das da weiterlaufen liesse. Keine der Dateien hatte größe 0. >An einem verzögerten UnLock kann es jedenfall nicht liegen, da ein Lese-Lock und ein Öffnen zum Lesen sich gar nicht ausschließen. Dachte ich mir auch, aber an irgendwas muss es ja liegen. >Abgesehen davon, kann ich nur immer wieder sagen, dass es sich lohnt, sich mit dem API von AOS2.0 (oder höher) zu beschäftigen... Hab ich doch vor 1 Stunde wieder gelesen Examine+Lock/Unlock. Okay, so siehts natürlich besser aus. Ich probiere mal ob der Fehler damit weg ist. [ - Antworten - Zitieren - Direktlink - ] |
22.08.2007, 16:46 Uhr MaikG Posts: 5172 Nutzer |
Scheint zu gehen. Danke! [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Open nach Examine schlägt fehl | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |