Ich würde es wohl eher so machen:
Delphi-Quellcode:
function FmtTok(const S: string; const C: Char): string;
var
ResP, SP, OrgRes: PChar;
begin
SetLength(Result, Length(S));
if S <> '' then
begin
SP := @S[1];
ResP := @Result[1];
OrgRes := ResP;
while SP^ <> #0 do
begin
if (ResP^ <> C) or (SP^ <> C) or ((ResP^ <> C) and (SP^ = C)) then
begin
if ResP^ = C then
Inc(ResP);
ResP^ := SP^;
end;
if (SP^ <> C) then
Inc(ResP);
Inc(SP);
end;
SetLength(Result, StrLen(OrgRes));
end;
end;
Ungetestet
Edit: Jetzt gehts hoffentlich.. ja, es geht