Hier och nochmal ein paar "uralte" Codes ... die sind zwar nicht superschnell, aber funktionieren 100%ig selbst wenn mal nicht ganz konformen CR-LF-Kombinationen.
Zum Testen:
Delphi-Quellcode:
Var D: File of Byte;
B, Ba: Byte;
T: Boolean;
CR := 13; //Carriage Return
LF := 10; //Line Feed
T := False;
AssignFile(D, Datei);
Try
FileMode := fmOpenRead;
Reset(D);
Ba := 255;
While not EoF(D) do Begin
Read(D, B);
If ((Ba = CR) and (B <> LF))
or ((Ba <> CR) and (B = LF)) Then Begin
T := False;
Break;
End;
Ba := B;
End;
If Ba = CR Then T := False;
Except
End;
CloseFile(D);
If not T Then {mindestens ein Nicht-Windows-Zeilenumbruch ist enthalten}
Zum Umwandeln:
Delphi-Quellcode:
AssignFile(Datei1, TempDatei); Reset(Datei1);
AssignFile(Datei2, Datei); Rewrite(Datei2);
Ba := 255;
While not EoF(Datei1) do Begin
Read(Datei1, B);
If (Ba = CR) and (B <> LF) Then Begin Write(Datei2, LF); Ba := LF; End;
If (Ba <> CR) and (B = LF) Then Begin Write(Datei2, CR); {Ba := CR;} End;
Write(Datei2, B);
Ba := B;
End;
If Ba = CR Then Write(Datei2, LF);
CloseFile(Datei2);
CloseFile(Datei1);
Aber wie schon von einigen gesagt wurde ... am Einfachsten und auch recht zuverläßig sind die TStringList-Varianten.