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