Einzelnen Beitrag anzeigen

looseleaf

Registriert seit: 25. Mai 2011
58 Beiträge
 
#1

Self nicht definiert nach dem Create?

  Alt 2. Feb 2024, 10:12
Liebe Gemeinde,

wir verwenden in unserem Programm immer wieder quasi-statische Execute() Methoden, um Froms zu ersellen und am Ende wieder freizugeben. Nach diesem Muster:

var MeinForm: TMeinForm;

function TMeinForm.Execute(): Boolean;
begin
Result := false;
MeinForm := TMeinForm.Create(Application);
With MeinForm do
try
// tuwas
Result := ShowModal=mrOk;
finally
Free;
end
end;


Wenn wir hier beim // tuwas auf Self referenzieren, ist das eine blöde Idee, oder? Ich glaube auch zu verstehen warum: Execute() ist hier noch keine Methode des Objekes, daher ergibt Self keinen Sinn. Was ich aber nich verstehe: Bei einem zweiten Aufruf funkioniert der Zugriff auf Self, obwohl am Ende ein Free steht. Kann mir wer auf die Sprünge helfen, warum das beim zweiten Mal geht? Und das Self zeigt lt. Debugger auch ab der Zeile mit dem .Create() auf dieselbe Adresse wie MeinForm.

Wir verwenden hier die MeinForm, dann funktioniert's wie erwartet.

Fragt bitte nicht, warum hier eine Variable verwendet wird, das ist Code von vor über 20 Jahren.

Danke
Stefan
  Mit Zitat antworten Zitat