amiga-news 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:
IF stream& AND sbytes& THEN
...

Was ist, wenn sbytes& 0 ist? Dateien dürfen durchaus eine Länge von 0 besitzen...

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.
.