mainfunction 的参数和变量在子例程中使用是否安全?

Are mainfunction's parameters and variables safe to use inside a 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 测试这段代码,似乎没有问题,但我对这种做法造成的麻烦有一些模糊的记忆(我不太记得是哪个问题了当时)

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

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