一部の関数では、値を送信するために変数が必要です。out
しかし、その値を必要とせず、関数パラメーターとして使用する変数を定義したくない場合があります。このような:
procedure test(out SomeVar: string);
begin
//...
end;
これを安全に実行したい:
test;
一部の関数では、値を送信するために変数が必要です。out
しかし、その値を必要とせず、関数パラメーターとして使用する変数を定義したくない場合があります。このような:
procedure test(out SomeVar: string);
begin
//...
end;
これを安全に実行したい:
test;
ラッパーを作成できます:
procedure test(); overload;
var
SomeVar : string;
begin
test(SomeVar);
end;
注: また、他のバージョンを でマークするoverload
必要があります。または、ラッパーを 以外の名前で呼び出してtest
、overload
.
別のオプション: ダミー変数をどこかで宣言します (ユニットの上部など):
var
DummyStr : string;
これにより、関数を呼び出すたびに新しい変数を宣言する必要がなくなります。
test(DummyStr);
プロシージャをオーバーロードできます。
procedure test(out SomeVar: string); overload;
begin
//...
end;
procedure test; overload; inline;
var dummy: string;
begin
test(dummy);
end;
inline
Delphi 2005 AFAIR 以降で使用できるキーワードに注意してください。
私が通常行うことは、out
パラメーターの代わりにポインターを使用することです。
procedure test(SomeVarP: PString=nil);
begin
if SomeVarP<>nil then
SomeVarP^ := ....
end;
そのため、次を使用できます。
var s: string;
test;
test(@s);