Das muss ein ganz anderer Code sein, mit dem du dieses Ergebnis produzierst. Hier habe ich dir einen besseren Code entwickelt. Er kapselt die Funktionalität in einer wiederverwendbaren Prozedur und achtet darauf, dass bei größeren Strings der Speichermanager durch das zeichenweise Löschen nicht unnötig gequält wird, indem ich die gültigen Zeichen einfach verschiebe.
Delphi-Quellcode:
procedure AddCleanLine(strings: TStrings;
const sLine, sFilter:
string);
var
i, iLength: Integer;
sClean:
string;
begin
iLength := Length(sLine);
sClean := sLine;
i := 1;
while i <= iLength
do
if Pos(sClean[i], sFilter) > 0
then
begin
Move(sClean[Succ(i)], sClean[i], iLength - i);
Dec(iLength);
end else Inc(i);
strings.Add(Copy(sClean, 1, iLength));
end;
procedure TDemoForm.AddButtonClick(Sender: TObject);
begin
AddCleanLine(RichEdit1.Lines, '
#T#e#s#t', Edit2.Text);
end;
marabu