hallo,
ich habe ein kleines spiel, bei dem ich die levels in eine verkette liste lese und die spielsteine immer über
img_zelle:= TBitmap.Create;
img_zelle.LoadFromFile(CStein);
...
img_zelle.free;
gesetzt und befreit werden.
Die Bilder werden dabei aus einem Ordner geladen. Das Problem ist aber nun, wenn die Bilder nicht mehr vorhanden sinn. Dies kann ja sowohl am Start des Spiels passieren, also auch, wenn während das Spiel läuft einer auf die Idee kommt, die Bilder aus dem Ordner zu löschen oder umzubennen. Also muss ich da wohl ein try...except reinsetzen um das Programm dann zu beenden.
Im Tutorial von
http://www.dsdt.info/tutorials/exceptions/?page=5 hatte ich gelesen, dass man Speicherbefreiung immer im finally-Teil abarbeiten soll, da man somit sicherstellen kann, dass dies auch geschieht, wenn vorher ein Fehler aufgetreten ist. Aber das bringt mir eigentlich nichts, da dann trotzdem eine Fehlermeldung kommt, dass ein Bild nicht geladen werden konnte. Gibt es keine try..Except..finally anweisung?
oder muss ich dann in meinem beispiel das free des bildes und der liste zweimal ausführen
Delphi-Quellcode:
try
img_zelle:= TBitmap.Create;
img_zelle.LoadFromFile(CStein3);
...
except
img_zelle.free;
// Befreit den Speicherplatz der verketeten Liste
destroyList;
showMessage('Bild wurde nicht gefunden');
close;
end;
img_zelle.free;