Moin Jority,
das Einlesen kannst Du Dir schon mal vereinfachen:
(Voraussetzung: Das Memo soll nicht nur ergänzt werden)
Memo1.Lines.LoadFromFile(....);
So könnte es gehen:
Delphi-Quellcode:
var
sBuf : string;
iIN : integer;
iOUT : integer;
begin
// Die Anzeige erst einmal unterdrücken
Memo1.Lines.BeginUpdate;
try
// Datei laden
Memo1.Lines.LoadFromFile('c:\temp\test.txt');
// In Buffer übernehmen, da das Ansprechen von Text die Geschwindigkeit drückt
// (wird jedesmal aus den Lines zusammengesetzt
sBuf := Memo1.Lines.Text;
// Hierhin die gültigen Zeichen schreiben
iOUT := 1;
// Alle Zeichen durchgehen
for iIN := 1 to length(sBuf) do begin
// nicht gültig, dann nächstes Zeichen
if not (sBuf[iIN] in [#10,#13,#32..#126]) then continue;
// Zeichen übertragen
sBuf[iOUT] := sBuf[iIN];
// Auf nächste freie Stelle
inc(iOUT);
end;
// Die gültigen Zeichen wieder zurückschreiben
Memo1.Lines.Text := copy(sBuf,1,iOUT-1);
finally
// Text anzeigen
Memo1.Lines.EndUpdate;
end;
end;
Da bei der Bearbeitung keine Zeichen eingefügt werden, können Quell- und ZielBuffer identisch sein.
Die Zeichen #13#10 stellen den Zeilenvorschub dar, und sollten auch erhalten bleiben.