Zitat von
Helmi:
Mir kam das Char-weise durchsteppen durch den String etwas unprofessional (billig) vor.
Das scheint nur so.
"Professionel" ist wenn der Sourcecode einfach strukturiert und und quasi selbsterklärend ist:
Delphi-Quellcode:
function StrReplaceChar(const S: Ansistring; const Source, Replace: AnsiChar): string;
var
I: Integer;
begin
Result := S;
// hier besteht noch Optimierungsmöglichkeit durch Verwendung eines Zeigers
for I := 1 to Length(S) do
if Result[I] = Source then
Result[I] := Replace;
end;
und dann später:
Memo1.Lines.Text := StrReplaceChar(StringStream.DataString, #0, ' ');
Nix gegen Himitsu, aber die Lösung aus Betrag #6 mit dem Memorystream ist deutlich schwerer zu lesen.
Der StringStream ist dem Memorystream vorzuziehen, da es viel sicherer und einfacher ist mit Strings zu arbeiten.
(du hast nur noch nicht mitgekriegt, dass man über das Property DataString direkt auf den Inhalt zugreifen kann)
Die potentiell "lebensgefährliche" Funktion MoveMemory() wird vermieden und das ist sehr wichtig für die Softwarequalität.
MoveMemory() ist wie eine geladene Schrotflinte unterm Bett - sie kann dir jederzeit den ganzen Fuss wegschiesen!