Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#35

Re: Wie Erkenne ich den Unterschied zwischen Unix und Win32

  Alt 30. Dez 2006, 12:07
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.
Angehängte Dateien
Dateityp: dpr vollerzw_alt_138.dpr (4,7 KB, 0x aufgerufen)
$2B or not $2B
  Mit Zitat antworten Zitat