Creation
[pascal]
procedure CLOUDCTRL.onTimer(Sender: TObject);
var
cloud: TCloud;
begin
Cloud:=TCloud.Create;
cloud.img := random(2);
cloud.x := 800;
cloud.y := -30+random(105);
cloud.speed := 1+random(2);
clouds.Add(cloud);
cloudtimer.Interval:=2000+random(4000);
end;
[/pascal]

Destruction:
[pascal]
i:=0;
while(i <= clouds.count-1) do
begin
tmpcloud := TCloud.create;
tmpcloud := TCloud(clouds[i]);
tmpcloud.x := tmpcloud.x-tmpcloud.speed;

if(tmpcloud.img=0) then
begin
locallist.Find('cloud1').DrawAlpha(AdDraw,AdRect(t mpcloud.x,
tmpcloud.y,tmpcloud.x+151,tmpcloud.y+77),0,150);
end else
begin
locallist.Find('cloud2').DrawAlpha(AdDraw,AdRect(t mpcloud.x,
tmpcloud.y,tmpcloud.x+183,tmpcloud.y+79),0,150);
end;
if(tmpcloud.x <= -185) then { Actual Deletion Here }
begin
TCloud(clouds[i]).Free;
clouds.delete(i);
i:=i-1;
end;
i:=i+1;
end;
[/pascal]
I've already tested and confirmed that they're being deleted from the list... the problem is the "real" objects, as the TList seems to only be a list of pointers.