Zu dem Code noch zwei Anmerkungen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
MyObject : TMyClass;
begin
try
MyObject := TMyClass.Create(True);
except
if Assigned(MyObject) then
FreeAndNil(MyObject);
end;
end;
1. Das If Assigned() kannst du dir sparen, das macht .Free intern selber (welches durch FreeAndNil() aufgerufen wird).
2. Ohne Initialisierung der Variable auf nil, knallt es so oder so, da das eine lokale Variable ist welche nicht initialisiert ist und somit ist die Möglichkeit eines recht ungültigen Wertes hoch. Dagegen kann auch Assigned() nichts ausrichten, da es nur auf <> nil prüft...
Und da du nicht freigeben brauchst, wie zuvor erklärt, kannst du dir somit gleich viel mehr sparen:
Somit so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
MyObject : TMyClass;
begin
try
MyObject := TMyClass.Create(True);
except
ShowMessage('Problem beim anlegen der Instanz');
end;
end;