fast file lib bug?
Posted: Sun Apr 18, 2004 2:08 am
i get a double tone pc speaker beep when i execute the Copytorealfile() procedure
have no calls to beep so i sure it not a misplaced endif or somthing...
the code below deals with alot of memory reading and writing,as the include shows
but when the beeping happens during the reading test so this suggests that it the lib
note: make c:\test.txt and fill it with some text before running anything
next source
i don't like posting full code just becasue i afraid of some one stealing it :\
but in this case i have no clue of whats going on
on the other hand the code isn't fully working and it helps fix the bug
edit: opps i for got to mention that teh debug window doesn't do anything like if it was a problem..just pause until the beep is over
have no calls to beep so i sure it not a misplaced endif or somthing...
the code below deals with alot of memory reading and writing,as the include shows
but when the beeping happens during the reading test so this suggests that it the lib
note: make c:\test.txt and fill it with some text before running anything
Code: Select all
;RamFile.pb
;by Dreglor
;4-17-04
;1.0 Beta
;
;requires "Fast File" lib
;
;CreateRamFile.b(id)
;DestroyRamFile.b(id)
;RamFileSeek.b(id,byte)
;ReadRamFileByte.b(id)
;ReadRamFileWord.w(id)
;ReadRamFileLong.l(id)
;ReadRamFileFloat.f(id)
;ReadRamFileString.s(id)
;WriteRamFileByte.b(id)
;WriteRamFileWord.b(id)
;WriteRamFileLong.b(id)
;WriteRamFileFloat.b(id)
;WriteRamFileString.b(id)
;WriteRamFileStringN.b(id)
;CopyToRealFile.b(id,file)
;CopyFromRealFile.b(id,file)
;RamFileEOF.b(id)
;RamFileLEN.l(id)
;RamFileAddress.l(id)
#MaxFiles=32;who needs more?
Dim RF_(#MaxFiles)
Dim RFB_(#MaxFiles)
Dim RFS_(#MaxFiles)
Procedure.b CreateRamFile(id)
Result=AllocateMemory(65536);a lenght of a string to start out with
If Result<>0
RF_(id)=Result
RFB_(id)=0
RFS_(id)=65536
ProcedureReturn 0;created sucessfully
Else
ProcedureReturn 1;couldn't allocate memory
EndIf
EndProcedure
Procedure.b DestroyRamFile(id)
FreeMemory(RF_(id))
RF_(id)=0
RFB_(id)=0
ProcedureReturn 0
EndProcedure
Procedure.b RamFileSeek(id,byte)
RFB_(id)=byte
EndProcedure
Procedure.b ReadRamFileByte(id)
Byte.b=PeekB(RF_(id)+RFB_(id))
RFB_(id)=RFB_(id)+1
ProcedureReturn Byte.b
EndProcedure
Procedure.w ReadRamFileWord(id)
Word.w=PeekW(RF_(id)+RFB_(id))
RFB_(id)=RFB_(id)+2
ProcedureReturn Word.w
EndProcedure
Procedure.l ReadRamFileLong(id)
Long.l=PeekL(RF_(id)+RFB_(id))
RFB_(id)=RFB_(id)+4
ProcedureReturn Long.l
EndProcedure
Procedure.f ReadRamFileFloat(id)
Float.f=PeekF(RF_(id)+RFB_(id))
RFB_(id)=RFB_(id)+4
ProcedureReturn Float.f
EndProcedure
Procedure.s ReadRamFileString(id)
Counter=0
Repeat
Char.b=PeekB(RF_(id)+RFB_(id)+Counter)
Counter=Counter+1
Until Char=13 Or Char=10 Or Char=0
String.s=PeekS(RF_(id)+RFB_(id),Counter)
RFB_(id)=RFB_(id)+Counter
ProcedureReturn String.s
EndProcedure
Procedure.b WriteRamFileByte(id,Byte.b)
ReAllocateMemory(RF_(id),RFS_(id)+1)
RFS_(id)=RFS_(id)+1
PokeB(RF_(id)+RFB_(id),Byte.b)
RFB_(id)=RFB_(id)+1
ProcedureReturn 0
EndProcedure
Procedure.b WriteRamFileWord(id,Word.w)
ReAllocateMemory(RF_(id),RFS_(id)+2)
RFS_(id)=RFS_(id)+2
PokeW(RF_(id)+RFB_(id),Word.w)
RFB_(id)=RFB_(id)+2
ProcedureReturn 0
EndProcedure
Procedure.b WriteRamFileLong(id,Long.l)
ReAllocateMemory(RF_(id),RFS_(id)+4)
RFS_(id)=RFS_(id)+4
PokeL(RF_(id)+RFB_(id),Long.l)
RFB_(id)=RFB_(id)+4
ProcedureReturn 0
EndProcedure
Procedure.b WriteRamFileFloat(id,Float.f)
ReAllocateMemory(RF_(id),RFS_(id)+4)
RFS_(id)=RFS_(id)+4
PokeF(RF_(id)+RFB_(id),Float.f)
RFB_(id)=RFB_(id)+4
ProcedureReturn 0
EndProcedure
Procedure.b WriteRamFileString(id,String.s)
ReAllocateMemory(RF_(id),RFS_(id)+Len(String))
RFS_(id)=RFS_(id)+Len(String)
For Counter=0 To Len(String)
PokeB(RF_(id)+RFB_(id)+Counter,PeekB(@String+Counter))
Next Counter
RFB_(id)=RFB_(id)+Counter
ProcedureReturn
EndProcedure
Procedure.b WriteRamFileStringN(id,String.s)
ReAllocateMemory(RF_(id),RFS_(id)+Len(String))
RFS_(id)=RFS_(id)+Len(String)
For Counter=0 To Len(String)
PokeB(RF_(id)+RFB_(id)+Counter,PeekB(@String+Counter))
Next Counter
PokeB(RF_(id)+RFB_(id)+Counter,13)
RFB_(id)=RFB_(id)+Counter+1
ProcedureReturn ""
EndProcedure
Procedure.b CopyToRealFile(id,file.s)
If FastOpenFile(File)<>0
FastWriteData(0,RFS_(id),RF_(id))
FastCloseFile()
ProcedureReturn 0
Else
FastCloseFile()
ProcedureReturn 1 ;failed to open file (fast file lib)
EndIf
EndProcedure
Procedure.b CopyFromRealFile(id,file.s)
If OpenFile(file)<>0
FLen=Lof()
CloseFile(0)
If FastOpenFile(File)<>0
FastReadData(0,Flen,RF_(id))
FastCloseFile()
ProcedureReturn 0
Else
FastCloseFile()
ProcedureReturn 1 ;failed to open file (fast file lib)
EndIf
Else
ProcedureReturn 2;faild to grab the file size
EndIf
EndProcedure
Procedure.b RamFileEOF(id)
If PeekB(RF_(id)+RFB_(id))=0
ProcedureReturn 1;EORF (End Of Ram File)
Else
ProcedureReturn 0;Not EORF
EndIf
EndProcedure
Procedure.l RamFileLEN(id)
ProcedureReturn RFS_(id)
EndProcedure
Procedure.l RamFileAddress(id)
ProcedureReturn RF_(id)
EndProcedure
Code: Select all
;rftest.pb
IncludeFile "RamFile.pb"
;CreateRamFile.b(id)
;DestroyRamFile.b(id)
;RamFileSeek.b(id,byte)
;ReadRamFileByte.b(id)
;ReadRamFileWord.w(id)
;ReadRamFileLong.l(id)
;ReadRamFileFloat.f(id)
;ReadRamFileString.s(id)
;WriteRamFileByte.b(id)
;WriteRamFileWord.b(id)
;WriteRamFileLong.b(id)
;WriteRamFileFloat.b(id)
;WriteRamFileString.b(id)
;WriteRamFileStringN.b(id)
;CopyToRealFile.b(id,file)
;CopyFromRealFile.b(id,file)
;RamFileEOF.b(id)
;RamFileLEN.l(id)
;RamFileAddress.l(id)
CreateRamFile(0)
DestroyRamFile(0)
CreateRamFile(1)
CopyFromRealFile(1,"C:\test.txt")
RamFileSeek(1,0)
Repeat
txt.s=txt+ReadRamFileString(1)
Until RamFileEOF(1)=1
MessageRequester("Debug",txt)
DestroyRamFile(1)
CreateRamFile(2)
WriteRamFileByte(2,87)
WriteRamFileWord(2,1987)
WriteRamFileLong(2,10191987)
WriteRamFileFloat(2,1019.1987)
WriteRamFileString(2,"10/19/87")
WriteRamFileStringN(2,"10/19/1987")
WriteRamfileString(2,"New Line Test")
RamFileSeek(2,0)
Debug ReadRamFileByte(2)
Debug ReadRamFileWord(2)
Debug ReadRamFileLong(2)
Debug ReadRamFileFloat(2)
txt=""
txt=ReadRamFileString(2)
txt=txt+ReadRamFileString(2)
MessageRequester("Debug2",txt)
address=RamFileAddress(2)
Debug PeekB(address)
Debug RamFileLen(2)
Debug RamFileEOF(2)
RamFileSeek(2,0)
CopyToRealFile(2,"c:\test2.txt")
DestroyRamFile(2)
OpenFile(0,"c:\test2.txt")
Debug Str(Lof())
CloseFile(0)
but in this case i have no clue of whats going on
on the other hand the code isn't fully working and it helps fix the bug
edit: opps i for got to mention that teh debug window doesn't do anything like if it was a problem..just pause until the beep is over