某些函数需要变量来发送值。但有时我不需要该值,也不想定义变量以将其用作函数out
参数。像这样:
procedure test(out SomeVar: string);
begin
//...
end;
我想安全地执行此操作:
test;
答案 0 :(得分:5)
您可以创建一个包装器:
procedure test(); overload;
var
SomeVar : string;
begin
test(SomeVar);
end;
注意:您还必须使用overload
标记其他版本,或者您可以将您的包装内容称为test
以外的其他内容,然后移除overload
。
另一种选择:在某处声明一个虚拟变量(可能在你的单元顶部):
var
DummyStr : string;
然后,每次要调用函数时都不必声明新变量。
test(DummyStr);
答案 1 :(得分:3)
您可以重载该过程:
procedure test(out SomeVar: string); overload;
begin
//...
end;
procedure test; overload; inline;
var dummy: string;
begin
test(dummy);
end;
请注意自Delphi 2005 AFAIR以来可用的inline
关键字。
我通常做的是使用指针而不是out
参数:
procedure test(SomeVarP: PString=nil);
begin
if SomeVarP<>nil then
SomeVarP^ := ....
end;
因此你可以使用:
var s: string;
test;
test(@s);
答案 2 :(得分:2)
使用指针:
procedure test(SomeVar: PString = nil);
begin
if SomeVal <> nil then SomeVar^ := '';
//...
if SomeVal <> nil then SomeVar^ := ...;
end;
test;
var
s: string;
test(@s);