Einzelnen Beitrag anzeigen

Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Hilfe zu Funktion "DeleteChars"

  Alt 17. Aug 2005, 12:02
Moin,

Delphi-Quellcode:
function DeleteChars(const S: string; CharSet: TCharSet; Delete: TDelete): string;
var
  PResIdx: PChar;
  PSIdx: PChar;
  ResLen: Integer;
begin
  SetLength(Result, Length(S));
  PResIdx := @Result[1];
  PSIdx := @S[1];
  ResLen := 0;
  while PSIdx^ <> #0 do
  begin
    if ((Delete = deExcept) and (PSIdx^ in CharSet)) or ((Delete = deRemove) and not (PSIdx^ in CharSet)) then
    begin
      PResIdx^ := PSIdx^;
      Inc(ResLen);
    end;
    Inc(PSIdx);
    Inc(PResIdx);
  end;
  SetLength(Result, ResLen);
end;
Kann mir jemand sagen was hier falsch ist?Die Funktion soll mir wenn "Delete" = "deRemove" ist alle Zeichen die im CharSet enthalten sind, aus dem String "S" löschen, wenn "Delete" = "deExcept" ist, sollten alle Zeichen gelöscht werden, die nicht im CharSet sind.

Wenn ich die Funktion nun so aufrufe:

Zitat:
showmessage(DeleteChars('abc.def', ['.'], deremove));
Kriege ich als Ergebnis "abccde", eshätte aber "abcdef" sein müssen.

Jemand ne Idee?


EDIT: Hab schon, das "Inc(PResIdx);" musste woanders hin.

Aber ist die Funktion ansonten richtig? Ist meine Erste FUnktion mit Pointern.
Mario
  Mit Zitat antworten Zitat