Hallo zusammen,
ich hoffe, dass diese Frage ausnahmsweise mal keine so harte Nuss ist wie meine anderen...
Also zum Thema:
Ich habe ein Formular mit überschriebenem Create()-Konstruktor, welches dynamisch erstellt wird. Falls eine bestimmte Funktion, die in diesem Konstruktor aufgerufen wird, fehlschlägt (keine
Exception, sondern Rückgabewert False), soll die Erstellung des Formulars abgebrochen und es wieder freigegeben werden. Ein Referenz-Parameter im Konstruktor gibt Aufschluss darüber, ob diese bestimmte Funktion fehl schlug oder nicht.
Delphi-Quellcode:
constructor TMyForm.Create(AOwner: TComponent; AMyP: Integer; var ASuccess: Boolean);
begin
[...]
if not MyFunc(AMyP) then begin
Free(); // Oje, das endet böse...
Exit;
end;
[...]
end;
Klar, ich könnte statt Free (was einen bösen Fehler verursacht) eine
Exception auslösen und diese beim Create-Aufruf abfangen. Aber ich möchte es einfach eleganter (-> ASuccess)...
Gibt es da einen anderen Lösungsweg?
Ich bin dankbar für jeden Lösungsvorschlag!
Grüße, Marco
P.S.: Damit keiner meckert:
Dieser Beitrag hätte zwar auch ins Forum "
VCL / WinForms / Controls" gepasst, da die Frage sich aber eher allgemein auf Objekte als speziell auf "das Formular" bezieht, habe ich sie hier reingestellt.