2016-07-20 1 views
1

main 함수의 매개 변수와 변수를 서브 루틴 내부에서 사용할 수 있습니까?mainfunction의 매개 변수와 변수는 서브 루틴 내에서 사용이 안전합니까?

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; 

지금은 델파이 2007에서이 코드를 테스트하고 있는데 아무 문제가 없습니다 것 같다,하지만 난 정말 문제가에 있던 기억하지 않는다 (이 관행으로 인한 문제에 대한 몇 가지 희미한 기억이 시간)

답변

3

코드는 절대입니다. 중첩 된 함수는 외부 범위의 변수를 참조 할 수 있습니다.

당신이 기억하고있는 것은 중첩 된 함수를 절차 적 값으로 사용하는 것이 허용되지 않는다는 것입니다. 예를 들어, 해당 주제에 대한 설명은 여기를 참조하십시오. Why cannot take address to a nested local function in 64 bit Delphi?

+0

나는 지금 기억해! 당신 말이 맞아, 그게 내가 그때하려고했던 일이야. 설명해 주셔서 감사합니다. – ExDev

관련 문제