Error accessing a file after WriteFile
Blitz3D Forums/Blitz3D Beginners Area/Error accessing a file after WriteFile
| ||
I have two functions. One Writing game save data. One Reading game save data. Writing Function: I use WriteFile to write the data to a file "savegame.dat" Then I do a CloseFile Reading Function: I used Openfile or ReadFile to Open the file "savegame.dat" My problem is that the file have a size of 0 kb Although the data was written to it. When I terminate the app, all the data shows in the file. The file size is then 700 kb. For some reason I cannot seem to access the file immediately after writing any data to it Any one heard of this before? |
| ||
Are you putting in a CloseFile() after writing ? EDIT - sorry -didn't notice you do CloseFile() Maybe put in a small delay before re-opening ? Allow the system time to save any cached info. |
| ||
Maybe you should show us the code. |
| ||
My guess: You're using the file handle in the functions, the handle is declared outside of the functions, and is not declared global. |
| ||
I declared the file handle globally, but still have the same problem Here is a piece of my code: Write Function: filewrite = WriteFile("files\savegame.dat") If filewrite <> 0 Then ;file exists ;Player info WriteLine(filewrite,"Player data") For p.Player = Each Player WriteLine(filewrite,"LOCX:"+EntityX(p\entity)) WriteLine(filewrite,"LOCY:"+EntityY(p\entity)) Next EndIf CloseFile(filewrite) Read Function: fileread = OpenFile("files\savegame.dat") If fileread <> 0 Then ;file exists While Not Eof(fileread) fr1$=ReadLine( fileread ) line_int%=Instr(fr1,"LOCX:",1) If line_int <> 0 Then strcount=5 s$=Mid(fr1,line_Int+strcount,10) : pfx=s EndIf line_int%=Instr(fr1,"LOCY:",1) If line_int <> 0 Then strcount=5 s$=Mid(fr1,line_Int+strcount,10) : pfy=s EndIf line_int%=Instr(fr1,"LOCZ:",1) If line_int <> 0 Then strcount=5 s$=Mid(fr1,line_Int+strcount,10) : pfz=s EndIf Wend EndIf CloseFile(fileread) Thanks for your replies.. |
| ||
Hmmm, both closefiles should be within the "if file opened"'s, but that shouldn't cause mentioned bug. Try replacing openfile with readfile. I'm still not shure what the bug might be. Edit: I tried to replicate your bug, the code you have given seemed to work fine. |
| ||
use readfile instead of openfile |
| ||
I used BlitzDebugger and stepped into the code. In the Read function: I see that fileread <> 0 (it exists) But when I do a ..While not Eof(fileread)..the pointer jumps to the end of the while loop, to CloseFile(fileread) For some reason, the compiler thinks there are no data in the file.. very strange |
| ||
Yes!..Got it working I did a CloseFile(writefile) again, after calling the Write function Now it's working perfectly Thanks for your replies guys |