Einzelnen Beitrag anzeigen

mifuno

Registriert seit: 9. Jun 2005
10 Beiträge
 
Delphi 7 Personal
 
#1

try .. except ... oder finally?

  Alt 22. Jun 2005, 18:14
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;
  Mit Zitat antworten Zitat