Ich muss für ein kleines projekt große TextDateien (logs) einlesen, leider können diese des öfteren NullBytes enthalten.
Soweit zu bunt, zur Zeit löse ich das so:
Code: Alles auswählen
Procedure.s FileToString(File.s)
Protected *memory, String.s, Bom.i
If FileSize(File.s) > 0
FileID.i = ReadFile(#PB_Any,File.s)
Bom.i = ReadStringFormat(FileID.i)
If FileID.i
*memory = AllocateMemory(FileSize(File.s))
If *memory
ReadData(FileID.i,*memory,FileSize(File.s))
;ONLY ASCII for now
Repeat
String.s = PeekS(*memory,FileSize(File.s),Bom.i)
If MemorySize(*memory) > Len(String.s)
PokeC(*memory + Len(String.s),1)
Debug "ZeroByte"
Else
Break
EndIf
ForEver
FreeMemory(*memory)
EndIf
ProcedureReturn String.s
EndIf
EndIf
EndProcedure
Kennt jemand von ech eine schnellere Methode?
Beste Grüße,
Deluxe0321