Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: unbekannte zeichen löschen...

  Alt 8. Nov 2004, 15:59
Deine innere For-Schleife habt üble Neben Effekte:
Delphi-Quellcode:
for j:=0 to Length(RichEdit1.Lines[i]) do
      if RichEdit1.Lines[i][j] in zeichen
      then RichEdit2.Lines[i]:=RichEdit2.Lines[i]+RichEdit1.Lines[i][j];
Du gehst Zeichen für Zeichen über den String RichEdit1.Lines[i] und änderst gleichzeitig RichEdit1.Lines[i].
Ich würde dir folgende Funktion aus der JCL empfehlen:
Delphi-Quellcode:
function StrKeepChars(const S: AnsiString; const Chars: TSysCharSet): AnsiString;
var
  Source, Dest: PChar;
begin
  SetLength(Result, Length(S));
  UniqueString(Result);
  Source := PChar(S);
  Dest := PChar(Result);
  while (Source <> nil) and (Source^ <> #0) do
  begin
    if Source^ in Chars then
    begin
      Dest^ := Source^;
      Inc(Dest);
    end;
    Inc(Source);
  end;
  SetLength(Result, (Longint(Dest) - Longint(PChar(Result))) div SizeOf(AnsiChar));
end;
Und damit kurz und knackig:
Delphi-Quellcode:
for j:=0 to Length(RichEdit1.Lines[i]) do
      RichEdit2.Lines[i]:=StrKeepChars(RichEdit2.Lines[i], zeichen);
Andreas
  Mit Zitat antworten Zitat