2016-07-20 22 views
1

Können die Parameter und Variablen der Hauptfunktion in Subroutinen verwendet werden oder ist da etwas nicht in Ordnung?Sind die Parameter und Variablen der Hauptfunktion sicher in einem Unterprogramm zu verwenden?

procedure TForm1.FormCreate(Sender: TObject); 
var 
    Test : string; 
    procedure SubFnTest(); 
    begin 
    ShowMessage(Self.Name); 
    ShowMessage(TForm1(Sender).Name); 
    ShowMessage(Test); 
    end; 
begin 
    Test := 'hello'; 
    SubFnTest(); 
end; 

Ich teste diesen Code auf Delphi-2007 jetzt und es scheint, gibt es kein Problem, aber ich habe einige schwache Erinnerung über Probleme durch diese Praktiken verursacht (mich nicht wirklich daran erinnern, was das Problem an, das war Zeit)

Antwort

3

Ihr Code ist absolut in Ordnung. Geschachtelte Funktionen können sich auf Variablen aus äußeren Bereichen beziehen.

Ich vermute, dass Sie sich erinnern, dass es nicht erlaubt ist, eine verschachtelte Funktion als prozeduralen Wert zu verwenden. Siehe zum Beispiel die Diskussion des Themas hier: Why cannot take address to a nested local function in 64 bit Delphi?

+0

Ich erinnere mich jetzt! Du hast recht, genau das habe ich damals versucht. Vielen Dank für die Klärung. – ExDev