Einzelnen Beitrag anzeigen

sir-archimedes

Registriert seit: 2. Jan 2006
Ort: Münster
167 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Wichtigkeit von Try...Finally...End

  Alt 19. Jan 2006, 20:26
Zitat von Elvis:
Könnte auch ein Argument sein, Factories (wie getAdoDataSet) Interface instanzen zurückgeben zu lassen. Dadurch kümmert sich der Compiler um Try-finally und man spart sich Tipperei.
Ich gebe dir Recht - das wäre ein guter Ort, um Interfaces einzusetzen. Allerdings müsste ich dann ja nicht nur ein Interface erstellen, sondern auch noch eine von ADODataSet abgeleitete Klasse, die dann auch das Interface implementiert. Dazu müsste ich dann auf der anderen Seite auch noch eine Menge im sonstigen Quelltext ändern und das ist mir zu aufwändig. Dann lieber Old-School-Factories mit "echten Objekten"

Zitat von Elvis:
btw, dein Problem verstehe ich trotzdem nicht ganz. Das Freigeben des DataSets hätte doch nur duch eine Exception im Destructor vom ProgressDialog verhindert werden können. Die wiederum hätte dir doch auffallen müssen....
Genau das verstehe ich auch nicht. Wenn etwas schief ginge und eine Exception ausgelöst würde, dann wäre sie später aufgefallen. Habe weiter unten ein
Delphi-Quellcode:
...
  except
    // Rollback the transaction on error
    pLogicDataModule.DBConnection.RollbackTrans;
    raise;
  end;
stehen. Das sollte ja eigentlich die Exception rauslassen. Das komische ist halt, dass es in der Delphi-Umgebung alles funktioniert. Daher erhalte ich da auch keine Exception. Die kommt aber "wie erwartet" auf einem System ohne Delphi.

Einen Fehler in der RTL schließe ich eigenltich aus - der Konstruktor funktioniert einwandfrei: Mein ProgressDialog wird wie gewollt angezeigt. Evtl. geht es schief, wenn ich diesen Dialog freee, ohne ihn vorher versteckt zu haben. Aber das möchte ich nicht auch noch testen - der Fehler hat mich genug Zeit gekostet
  Mit Zitat antworten Zitat