nja, jedes Zeichen einzeln an den Temp-String anzuhängen ist nicht grad optimal
(da wird z.B. jedesmal der komplette alte Temp-String, zusammen mit dem neuen Zeichen, in einen neuen Temp-String umkopiert)
du kannst die Daten auch direkt im String ersetzen
Delphi-Quellcode:
function FileToStringErsetze(const FileName: String; zuErsetzendeZeichen, NeueZeichen: AnsiChar): AnsiString;
var fs: TFileStream;
begin
fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
SetLength(Result, fs.Size);
if fs.Size > 0 then fs.ReadBuffer(Result[1], Length(Result));
for i := 1 to Length(Result) do
if Result[i] = zuErsetzendeZeichen then Result[i] := NeueZeichen;
finally
fs.Free;
end;
end;
s := FileToStringErsetze(opendialog1.filename, #00, '|');
falls dich noch andere Zeichen stören, so könnte man z.B. gleich alle Steuerzeichen (unterhalb des Leertaste) ersetzen ... abgesehn von Zeilenumbruch und Tabulator
Delphi-Quellcode:
function FileToStringErsetze(const FileName: String; NeueZeichen: AnsiChar): AnsiString;
var fs: TFileStream;
begin
fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
SetLength(Result, fs.Size);
if fs.Size > 0 then
fs.ReadBuffer(Result[1], Length(Result));
for i := 1 to Length(Result) do
if Result[i] in [#0..#8, #11, #12, #14..#31] then
Result[i] := NeueZeichen;
finally
fs.Free;
end;
end;
s := FileToStringErsetze(opendialog1.filename, '|');