amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Open nach Examine schlägt fehl [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2007-08-22, 15:55 h

MaikG
Posts: 5172
User
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. ]

[ - Answer - Quote - Direct link - ]

2007-08-22, 16:08 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2007-08-22, 16:18 h

MaikG
Posts: 5172
User
>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.

[ - Answer - Quote - Direct link - ]

2007-08-22, 16:46 h

MaikG
Posts: 5172
User
Scheint zu gehen. Danke!

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Open nach Examine schlägt fehl [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.