Genau, sauberer wäre aber, wenn sich ein TSprite selbst darum kümmern würde. Sprich statt:
Delphi-Quellcode:
for X := 0 to Sprites.Count - 1 do
begin
if Sprites[X].h_Bitmap <> 0 then
begin
DeleteObject(Sprites[X].h_Bitmap);
Sprites[X].h_Bitmap := 0;
end;
end;
Sprites.Free;
So:
Delphi-Quellcode:
type
TSprite = class
...
public
destructor Destroy; override;
end;
destructor TSprite.Destroy;
begin
inherited;
if h_Bitmap <> 0 then
begin
DeleteObject(h_Bitmap);
h_Bitmap := 0;
end;
end;
// und dann an deiner Stelle nur noch:
Sprites.Free;