Delphi-Quellcode:
while i <= result.Count - 1 do
begin
a := 0;
ElementeZumLoeschen := Tlist<integer>.create;
repeat
if result[i].isDominated(result[a]) then
begin
if ElementeZumLoeschen.IndexOf(a) = -1 then
begin
ElementeZumLoeschen.Add(a);
end;
end;
if result[i].isDominated(result[result.Count - 1 - a]) then
begin
if ElementeZumLoeschen.IndexOf(result.Count - 1 - a) < 0 then
ElementeZumLoeschen.Add(result.Count - 1 - a);
end;
inc(a);
until (a > result.Count div 2);
for a := 0 to ElementeZumLoeschen.Count - 1 do
result.Delete(ElementeZumLoeschen[a]- a );
freeandnil(ElementeZumLoeschen);
inc(i);
end;
bei den oben zu sehenden Code habe ich eine Liste, wenn folgende bestimmung erfüllt sind, merke ich mir den Index.
in einer For schleife laufe ich dann die Inhalte durch, mti den INdexen die gelöscht werden soll.
Problem; ich bekomm eine outofrange.
Sieht wer aufm Blick, was dort schief gelaufen ist ?
Oder gibt es noch ne andere Möglichkeit?
( laut
DP suche, eine toarray Methode. Da ich dort aber eine Kopie meiner Liste erstelle, würde ich dies gern vermeinden)