主函数的参数和变量在子程序中是否可以安全使用?

时间:2016-07-20 13:20:15

标签: delphi subroutine

主要功能的参数和变量是否可以在子程序中使用,或者这样做有什么问题?

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;

我现在正在Delphi-2007上测试这段代码,似乎没有问题,但我对这种做法引起的麻烦有一些微弱的记忆(我真的不记得那时候出现了什么问题)

1 个答案:

答案 0 :(得分:3)

你的代码绝对没问题。嵌套函数可以引用外部作用域中的变量。

我怀疑你记得的是不允许使用嵌套函数作为程序值。例如,请在此处查看该主题的讨论:Why cannot take address to a nested local function in 64 bit Delphi?