From: Marc 'BlackJack' Rintsch (marc_at_rintsch.de)
Date: 2001-08-24 13:10:07
Hi udo, > i still have problems with file-io, although i think i followed the > rules. here is a a small piece of code. > > [code snipped] > > the open returns rc=5 > sometimes a rc=2 I wasn't able to reproduce rc=5 (= device not present) but I get rc=2 (= file open). The Problem is with cbm_open() which doesn't give an error when you try to open a non-existent file for reading. You open the adressbook file which is not present and then you try to read the number of adresses from it. This fails but you don't close the file in your error check. That's why you get "file open" errors if you try to open it again. Adding a 'cbm_close' to your error check in 'loadAdr' should be a workaround: if(rc<2){ DispError("Lese-Fehler"); anz_adr=0; cbm_close(A_FNR); return; } BTW why are you checking rc<2 ? Every value except 0 is an error. The same problem you have in BASIC with the status variable ST. 10 OPEN2,8,2,"XYZ,S,R" 20 PRINT ST 30 GET#2,A$ 40 PRINT ST Assuming that a sequential file named "XYZ" doesn't exist: First output of ST is 0 and only after really trying to read something from the file sets it to an error value. I haven't found an easy way to check this just on the computer side, you have to read the error channel to get this error. That's the next item on my TODO list but I was very lazy when it comes to working on that functions. While looking at your code I noticed that you could spare the 64 bytes of the local variable 'cmd' and the sprintf function call in Open(Input|Output) if you use the secondary adress as a selector for read and write: cbm_open(2,8,1,"name,s") opens a file for writing and cbm_open(2,8,0,"name,s") opens it for reading. In both cases you could use the same filename. I think I'm gonna add constants for the secondary address to cbm.h Ciao, Marc 'BlackJack' Rintsch -- Who is General Failure and why is he reading my hard disk? ---------------------------------------------------------------------- To unsubscribe from the list send mail to majordomo_at_musoftware.de with the string "unsubscribe cc65" in the body(!) of the mail.
This archive was generated by hypermail 2.1.3 : 2001-12-14 22:05:41 CET