Aktuell habe ich eine (recht) einfache Möglichkeit gefunden:
Alles spielt sich jetzt eigentlich nur in der zweiten for-Schleife ab:
Delphi-Quellcode:
procedure TSteuerung.Aufraeumen();
var i,h,j:Integer;
begin
for i:=0 to 3 do
for h:=0 to (Length(hAuto[i])-1) do
begin
if hAuto[i][h].IstAusDemBild then
begin
// Auto zerstören
hAuto[i][h].Destroy;
// Array Indizes verschieben und Array verkürzen
for j:=h to (Length(hAuto[i])-2) do hAuto[i][j]:=hAuto[i][j+1];
SetLength(hAuto[i],Length(hAuto[i])-2);
// Vordermann löschen
if h>0 then hAuto[i][h-1].SetzeAuto(nil);
end;
end;
end;
Der Code müsste von der Logik her richtig sein, aber ich bekomme nen RangeCheck Error (keine
AV mehr *juhu*)
Einer ne Idee?