Online
Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
Delphi 12 Athens
|
AW: Exception wird nicht angezeigt - Ist das ein Fehler?
9. Dez 2016, 12:17
Da hier die Form "lokal" ist und von außen geschlossen wird
Delphi-Quellcode:
// weg mit der bösen globalen Variable!!!
procedure TForm1.Button1Click(Sender: TObject);
var
Form2: TForm2;
begin
Form2 := TForm2.Create(Self); // oder nil, da wir das ja eh alles immer selber freigeben
try
Form2.PopupParent := Self; // damit die Form2 immer über der Form1 liegt (nicht nötig bei ShowModal)
Form2.Show; // hier natürlich ShowModal, da sonst ja das Release/Free die Form auch ohne Exception sofort schließt ;)
raise Exception.Create(' Ein Fehler');
finally
Form2.Free;
end;
end;
Delphi-Quellcode:
type
TForm1 = class(TForm)
...
protected
procedure Notification(AComponent: TComponent; Operation: TOperation);
private
Form2: TForm2;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
try
Form2.PopupParent := Self; // damit die Form2 immer über der Form1 liegt (nicht nötig bei ShowModal)
Form2.Show; // hier natürlich ShowModal, da sonst ja das Free
raise Exception.Create(' Ein Fehler');
except
FreeAndNil(Form2);
raise;
end;
end;
procedure TForm1.Notification(AComponent: TComponent; Operation: TOperation);
begin
if Operation = opRemove then begin
if AComponent = Form2 then // Form2 sagt mir, dass es mich jetzt verlassen will > siehe das Create(Self)
Form2 := nil; // stattdessen könnte man auch die Form2-Variable im TForm2.Destroy auf nil setzen, aber TForm2 weiß ja eigentlich nichts von dieser Variable
end;
inherited;
end;
// und nicht das caFree im TForm2.OnClose vergessen, außer man will die bestehende Form später erneut anzeigen können
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
Geändert von himitsu ( 9. Dez 2016 um 12:20 Uhr)
|