Zeilen txt löschen
Verfasst: 30.08.2017 18:01
Hallo, ich suche ein Code-Beispiel um in einer txt-Datei eine bestimmte Zeilenanzahl von unten, z.B. die letzten 10, zu löschen. Kann mir da jemand behilflich sein?
Code: Alles auswählen
TruncateFile(#Datei)
Code: Alles auswählen
Procedure.i CutFilePart(File.s,Length.i)
Protected FileHandle.i = OpenFile(#PB_Any,File)
If FileHandle
If Length < Lof(FileHandle)
FileSeek(FileHandle,Length)
TruncateFile(FileHandle)
CloseFile(FileHandle)
ProcedureReturn #True
EndIf
CloseFile(FileHandle)
EndIf
EndProcedure
Warum Blockweise? Datei komplett in einen Buffer laden und von hinten zu suchen beginnen.mk-soft hat geschrieben:Alternative die Datei Blockweise von hinten in ein Buffer laden und selber nach den Zeilenumbruch suchen
Je nachdem wie groß die Datei ist, fände ich es Blockweise auch nicht schlecht.Josh hat geschrieben:Warum Blockweise? Datei komplett in einen Buffer laden und von hinten zu suchen beginnen.mk-soft hat geschrieben:Alternative die Datei Blockweise von hinten in ein Buffer laden und selber nach den Zeilenumbruch suchen
Warum? Du musst ohnehin die ganze Datei laden, weil du ja das Ende benötigst. Wobei ich mal davon ausgehe, dass es keine Datei von 1 GB oder so istNicTheQuick hat geschrieben:Je nachdem wie groß die Datei ist, fände ich es Blockweise auch nicht schlecht.
Code: Alles auswählen
NewList bla.s()
If ReadFile(0,"C:\proglist.txt") And CreateFile(1,"C:\somerandomfile.txt")
ClearList(bla.s())
While Eof(0) = #False
a$ = ReadString(0)
If a$
AddElement(bla.s())
bla() = a$
EndIf
Wend
Max = ListSize(bla.s())
If Max > 10
Max -1
For Pos = 0 To Max -10
SelectElement(bla.s(),Pos)
Debug bla()
WriteStringN(1,bla())
Next
EndIf
CloseFile(0)
CloseFile(1)
EndIf
Nö, wozu. Es wäre auch gut zu wissen, wie lange eine Zeile theoretisch sein kann. Wenn sie bspw. maximal 1000 Zeichen lang sein kann:Josh hat geschrieben:Warum? Du musst ohnehin die ganze Datei laden, weil du ja das Ende benötigst. Wobei ich mal davon ausgehe, dass es keine Datei von 1 GB oder so ist
Zum testen aber eine Kopie machen und mit der arbeiten:)Fanpost hat geschrieben:@ GlassJoe
Danke. Ich muss leider mit der "Quell-Datei" arbeiten