.... und das dann noch in Try-Finally Blöcke kapseln und Du hast ein wirklich robustes Programm.
Delphi-Quellcode:
PROCEDURE Damen_visualisieren (spalte,zeile:integer);
var
damebild:TBitmap;
begin
damebild:=TBitmap.Create;
Try // ***********
damebild.LoadFromFile('dame.bmp');
DrawGrid1.Canvas.Draw(((spalte*30)+spalte)-31,((zeile*30)+zeile)-31,damebild);
Finally // ******
damebild.Free; //Hier ...
end; //*********
end;
PROCEDURE Damen_loeschen (spalte,zeile:integer);
var
damebild:TBitmap;
begin
damebild:=TBitmap.Create;
Try // *******************
damebild.LoadFromFile('leer.bmp');
DrawGrid1.Canvas.Draw(((spalte*30)+spalte)-31,((zeile*30)+zeile)-31,damebild);
Finally //****************
damebild.Free; // ... und hier
end; //******************
end;
Dann wird der Speicher auch dann freigegeben, wemm beim 'LoadFromFile' oder dem anschließenden Draw etwas schief geht.
Weiterhin könnte man einfach zwei Bitmaps global deklarieren (oder in der Form) und die beiden Bilder einmalig beim Programmstart laden. Dann erübrigt sich das Ganze sowieso.
Ach ja: Im FormDestroy die beiden Bitmaps wieder freigeben.