是否有可能將nil作爲未聲明的常量傳遞給某些函數的無類型參數? 我有這樣的功能,我想通過一些不變的Data
參數來滿足編譯器。我在內部決定使用Size參數。我知道我可以使用指針而不是無類型參數,但對我的情況來說更舒適。如何將「nil」常量傳遞給untyped參數?
現在我越來越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指針。 –