Das mit dem array funktioniert nicht so recht. Jetzt habe ich das mal mit einer TObjectlist probiert. Eigentlich sollte ich den ganzen code nochmal neuschreiben oder zumindest anpassen aber da ich mir nicht sicher bin ob des so klappt probiere ich es erst mal so.
Delphi-Quellcode:
procedure THaupt.findelinie;
var
x,x2 : TObjectlist;
i,j,tmp : integer;
test : TBlock;
weiter,start : Boolean;
begin
x := Tobjectlist.Create;
x2 := Tobjectlist.create;
weiter := true;
start := false;
for i := 1 to high(Block) do
begin
x.Add(Block[i]);
end;
for j := 1 to 27 do
begin
if weiter then // damit nicht schon die nächste
// unterrsucht wird bevor die davor
// gelöscht wird
begin
x2.clear;
x2:= Tobjectlist.Create;
for i := 0 to x.Count-1 do
begin
test := TBlock(x.Items[i]) ;
if test.fPosition.Y = j then
begin
showmessage(inttostr(j));
x2.Add(x.items[i]);
if x2.Count+1 = 16 then
begin
weiter := false;
start := true;
end;
end;
end;
end;
end;
if start then
begin
for i := 0 to x2.Count - 1 do
begin
tmp := x.IndexOf(x2.Items[i]);
x.Delete(tmp);
end;
setlength(Block,x.Count+1);
for i := 1 to x.Count do
begin
Block[i] := TBlock(x.Items[i-1]);
end;
weiter := true;
start := false;
x.Free;
end;
end;
Das funktioniert nur leider nicht es löscht jedesmal etwas aber nicht das was es soll.