何か関数の型なしパラメータに宣言されていない定数としてnilを渡すことは可能ですか? 私はこれらのような関数を持っており、コンパイラを満たすために、Data
パラメータに定数を渡したいと思います。内部的に私はSizeパラメータで決定しています。私は、型指定されていないパラメータの代わりにPointerを使うことができますが、私の場合ははるかに快適です。型なしのパラメータに "nil"定数を渡すにはどうすればよいですか?
今私は、これは動作しますが、私は、変数の宣言を残すことができれば、私は喜んでいるだろうE2250 There is no overloaded version of 'RS232_SendCommand' that can be called with these arguments
function RS232_SendCommand(const Command: Integer): Boolean; overload;
begin
// is it possible to pass here an undeclared constant like nil in this example?
Result := RS232_SendCommand(Command, nil, 0);
end;
function RS232_SendCommand(const Command: Integer; const Data; const Size: Integer): Boolean; overload;
begin
...
end;
を取得しています。
function RS232_SendCommand(const Command: Integer): Boolean; overload;
var
Nothing: Pointer;
begin
Result := RS232_SendCommand(Command, Nothing, 0);
end;
ソリューションは、このように気にいらを使用することです。
function RS232_SendCommand(const Command: Integer): Boolean; overload;
begin
// as the best way looks for me from the accepted answer to use this
Result := RS232_SendCommand(Command, nil^, 0);
// or it also possible to pass an empty string constant to the untyped parameter
// without declaring any variable
Result := RS232_SendCommand(Command, '', 0);
end;
私のコマンドの中には、コマンド送信後に送信されるデータがあるため、これをやっています。ヘルプ
うわー、それはさらにスマートです。少なくともこれは不可能だと言われたので、私はこれを答えとして受け入れます。おかげで – TLama
うん、それはエレガントです。 – Kaos
私は 'nil ^'がエレガントなクラスに分類されるかどうかはわかりません! ;-)これは、nilポインタを逆参照しないことを覚えておく必要があります。 –