Und was ist, wenn auf das #13 kein #10 folgt?
Dann muss man die Logik im Case an die eigenen Bedürfnisse anpassen.
Delphi-Quellcode:
procedure TIrgendeineKlasse.Zeichenaustauschen(input : TMemoryStream; output : TMemoryStream);
Var
ch1 : Char;
ch2 : Char;
begin
input.Position := 0;
output.Position := 0;
// Ist überhaupt was in der Datei drin?
if input.Read(ch1, 1) > 0 then begin
repeat
case ch of
#13 : begin // Das nächste Zeichen lesen.
if input.Read(ch2, 1) <> 0 then begin
case ch2 of
#10 : ; // ignorieren, wird als nächstes Zeichen gelesen.
else
begin // wenn wir 'ne #13 erhalten und keine #10 folgt, geben wir 'ne #10 aus.
ch2 := #10;
output.Write(ch2,1);
end;
end;
// und wieder ein Zeichen zurück.
input.Position := input.Position - 1;
end;
end;
else
output.Write(ch1,1); // Übrige Zeichen ausgeben.
end;
until input.Read(ch1, 1) = 0;
input.Position := 0;
output.Position := 0;
end;
end;