Hm, mit einem Ersetzungsstring, der größer als ein Byte ist, wird das etwas schwieriger. Allerdings nicht unmöglich:
Delphi-Quellcode:
procedure Fix0Bytes(var Str: String);
var i, j: Integer;
begin
i := 1;
j := 1;
while i < Length(Str) do
if (Str[i] = '&') and (Str[i+1] = '%') then
begin
Str[j] := #0;
Inc(i, 2);
Inc(j);
end
else
begin
Str[j] := Str[i];
Inc(i);
Inc(j);
end;
SetLength(Str, j);
end;
Ich habe es nicht getestet, aber zumindest mit Ansistrings müsste es so gehen.