Hallo,
in Delphi sorgt die Prozedur ReallocMem() für die Vergrößerung eines bereits angeforderten Speicherblocks. Ist der Speicher hinter dem aktuellen Block in Benutzung, dann wird der aktuelle Block freigegeben und der größere Speicher an anderer Stelle zugeordnet.
Der Reiz einer Regular Expression liegt für mich im nicht prozeduralen Ansatz, aber sie kann nie schneller sein, als eine gute handkodierte Lösung:
Delphi-Quellcode:
function PurgeId(const list: string): string;
var
iPos, iDest: Integer;
skipping: Boolean;
begin
skipping := False;
SetLength(Result, Length(list));
iDest := 1;
for iPos := 1 to Length(list) do
if skipping then
skipping := list[iPos] <> '}'
else if list[iPos] = '{' then
skipping := True else
begin
Result[iDest] := list[iPos];
Inc(iDest);
end;
SetLength(Result, Pred(iDest));
end;
Freundliche Grüße