3

一部の関数では、値を送信するために変数が必要です。outしかし、その値を必要とせず、関数パラメーターとして使用する変数を定義したくない場合があります。このような:

procedure test(out SomeVar: string);
begin
   //...
end;

これを安全に実行したい:

test; 
4

3 に答える 3

6

ラッパーを作成できます:

procedure test(); overload;
var
    SomeVar : string;
begin
    test(SomeVar);
end;

注: また、他のバージョンを でマークするoverload必要があります。または、ラッパーを 以外の名前で呼び出してtestoverload.

別のオプション: ダミー変数をどこかで宣言します (ユニットの上部など):

var 
  DummyStr : string;

これにより、関数を呼び出すたびに新しい変数を宣言する必要がなくなります。

test(DummyStr);
于 2013-07-31T04:25:04.577 に答える
3

プロシージャをオーバーロードできます。

procedure test(out SomeVar: string); overload;
begin
   //...
end;

procedure test; overload; inline;
var dummy: string;
begin
  test(dummy);
end;

inlineDelphi 2005 AFAIR 以降で使用できるキーワードに注意してください。

私が通常行うことは、outパラメーターの代わりにポインターを使用することです。

procedure test(SomeVarP: PString=nil); 
begin
   if SomeVarP<>nil then
     SomeVarP^ := ....
end;

そのため、次を使用できます。

var s: string;

test;
test(@s);
于 2013-07-31T06:41:59.077 に答える