绕过功能"输出"参数

SAM*_*Pro 2 delphi

某些函数需要一个变量来发送一个值.但有时我不需要该值,也不想定义变量以将其用作函数out参数.像这样:

procedure test(out SomeVar: string);
begin
   //...
end;
Run Code Online (Sandbox Code Playgroud)

我想安全地执行它:

test; 
Run Code Online (Sandbox Code Playgroud)

Blo*_*ard 5

您可以创建一个包装器:

procedure test(); overload;
var
    SomeVar : string;
begin
    test(SomeVar);
end;
Run Code Online (Sandbox Code Playgroud)

注意:您还必须使用其他版本标记overload,或者您可以调用您的包装器以外的其他内容test,并删除overload.

另一种选择:在某处声明一个虚拟变量(可能在你的单元顶部):

var 
  DummyStr : string;
Run Code Online (Sandbox Code Playgroud)

然后,每次要调用函数时都不必声明新变量.

test(DummyStr);
Run Code Online (Sandbox Code Playgroud)

  • 所谓的"其他选项"在多线程场景下失败 (2认同)