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.