@Falko
Naja, Textformat wird nicht berücksichtigt (funktioniert nur mit ASCII-Texten, die es kaum noch gibt,
heutzutage sind die meisten Textdateien in UTF-8 codiert), und auch langsamer, was bei kleineren
Dateien natürlich keine Rolle spielt. Vorteile kann ich keine erkennen, ganz im Gegenteil  
// edit
Hab meinen Code nochmals optimiert. Hab es in eine Procedure gepackt und jetzt wird auch
berücksichtigt, wenn die letzte Zeile kein EOL (EndOfLine) enthält.
Code: Alles auswählen
EnableExplicit
Procedure RemoveFirstLine(File, EOL.s = #LF$)
  Protected Format, length.q, *mem, pos.q
 
  If IsFile(File)
    FileSeek(File, 0)
    Format = ReadStringFormat(File)
    length = Lof(File)
    If length
      *mem = AllocateMemory(length)
      ReadData(File, *mem, length)                          ; Daten in den Speicher lesen.
      pos = FindString(PeekS(*mem, -1, Format), EOL)      ; erstes Zeilenende Zeichen suchen.
      If pos
        WriteStringFormat(File, Format)                     ; BOM schreiben.
        WriteData(File, *mem + pos, length - pos)           ; Daten ab gefundener pos schreiben.
        TruncateFile(File)                                  ; Rest vom Orginal abschneiden.
        If PeekS(*mem + length - Len(EOL), Len(EOL), Format) <> EOL
          WriteStringN(File, "", Format)
        EndIf
      EndIf
      FreeMemory(*mem) 
    EndIf  
  EndIf
  ProcedureReturn Format
EndProcedure
Define Format, FF = OpenFile(#PB_Any, "wichtig.txt")
If FF
  Format = RemoveFirstLine(FF)
  WriteStringN(FF, "Ich bin die neue letzte Zeile", Format)
  ; ...
  CloseFile(FF)
EndIf
// edit
noch mal fehler beseitigt bei leerer Datei.