Ich würde das eh anders machen (manchmal die einfachste Möglichkeit, ein Problem zu lösen)
Delphi-Quellcode:
i := Low(Info);
While i<=High(Info) do begin
if Info[i].Deleted then begin
MoveInfo(High(Info),i);
setLength(Info, Length(Info) - 1);
end;
inc(i);
end;
Also: Jedes 'Loch' wird einfach mit dem höchsten Element aufgefüllt und die Liste dann verkleinert.
Sofern Du keine sortierte Liste hast, geht das natürlich viel schneller.
Tipp: Verwende die 'Top-Down Programmierung mit Stepwise refinement' Das war vor 30 Jahren, als ich angefangen habe, state of the art. Und ist es immer noch, wenn ich an Refactoring denke und die Prämisse, Code lesbar und kompakt zu halten.