by just me » 08 Feb 2024, 11:42
Moin
@Stroker-007,
ganz so komplex, wie es auf den ersten Blick auschauen mag, ist das File-Objekt nicht. Sei's drum, alle Wege führen nach Rom.
Wenn Du die Datei einliest, ist es nicht erforderlich, den kompletten Inhalt mit
Loop, Parse durchzuarbeiten. Zeilenwechsel in Windows-Textdateien bestehen normalerweise aus zwei Zeichen:
`r`n. Wenn man will, kann man auch auf das
`r verzichten. Einige Editoren kommen auch ohne zurecht. In jedem Fall ist das letzte Zeichen einer Zeile, auf die noch etwas folgt, ein
`n.
Wenn Du nun die ersten 3 Zeilen löschen willst, kannst Du einfach nach dem dritten
`n suchen. Das geht mit
InStr(), dem man eine Startposition für die Suche mitgeben kann. Für 3 Zeilen würde das so aussehen:
Code: Select all
Zeilen := 3
DateiEnde := StrLen(DateiInhalt)
ZeilenEnde := 0
Loop, %Zeilen% {
If !(ZeilenEnde := InStr(DateiInhalt, "`n", 1, ZeilenEnde + 1)) { ; es wurde kein (weiterer) Zeilenwechsel gefunden) -> Dateiende erreicht
ZeilenEnde := DateiEnde
Break
}
}
If (ZeilenEnde < DateiEnde)
DateiRest := SubStr(DateiInhalt, ZeilenEnde + 1)
Else
DateiRest := ""
Den 'Dateirest' kannst Du nun zurückschreiben und fertig.
Moin [mention]Stroker-007[/mention],
ganz so komplex, wie es auf den ersten Blick auschauen mag, ist das File-Objekt nicht. Sei's drum, alle Wege führen nach Rom.
Wenn Du die Datei einliest, ist es nicht erforderlich, den kompletten Inhalt mit [c]Loop, Parse[/c] durchzuarbeiten. Zeilenwechsel in Windows-Textdateien bestehen normalerweise aus zwei Zeichen: [c]`r`n[/c]. Wenn man will, kann man auch auf das [c]`r[/c] verzichten. Einige Editoren kommen auch ohne zurecht. In jedem Fall ist das letzte Zeichen einer Zeile, auf die noch etwas folgt, ein [c]`n[/c].
Wenn Du nun die ersten 3 Zeilen löschen willst, kannst Du einfach nach dem dritten [c]`n[/c] suchen. Das geht mit [c]InStr()[/c], dem man eine Startposition für die Suche mitgeben kann. Für 3 Zeilen würde das so aussehen:
[code]Zeilen := 3
DateiEnde := StrLen(DateiInhalt)
ZeilenEnde := 0
Loop, %Zeilen% {
If !(ZeilenEnde := InStr(DateiInhalt, "`n", 1, ZeilenEnde + 1)) { ; es wurde kein (weiterer) Zeilenwechsel gefunden) -> Dateiende erreicht
ZeilenEnde := DateiEnde
Break
}
}
If (ZeilenEnde < DateiEnde)
DateiRest := SubStr(DateiInhalt, ZeilenEnde + 1)
Else
DateiRest := ""
[/code]
Den 'Dateirest' kannst Du nun zurückschreiben und fertig.