¿es posible pasar nil como una constante no declarada al parámetro sin tipo de alguna función? Tengo funciones como estas y me gustaría pasar alguna constante al parámetro Data
para satisfacer al compilador. Internamente estoy decidiendo por el parámetro Tamaño. Sé que puedo usar el puntero en lugar del parámetro sin tipo, pero es mucho más cómodo para mi caso.¿Cómo pasar la constante "nil" al parámetro sin tipo?
Ahora me estoy poniendo 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;
Esto funciona, pero me alegraría si pudiera salir de la declaración de variables.
function RS232_SendCommand(const Command: Integer): Boolean; overload;
var
Nothing: Pointer;
begin
Result := RS232_SendCommand(Command, Nothing, 0);
end;
solución es usar algo como esto.
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;
Estoy haciendo esto porque algunos de mis comandos tienen datos enviados después de la transmisión del comando.
Gracias por la ayuda
Guau, eso es aún más inteligente. Aceptaré esto como la respuesta al menos porque se mencionó que es imposible. Gracias – TLama
Sí, eso es elegante. – Kaos
¡No estoy seguro de que 'nil ^' pueda clasificarse como elegante! ;-) Solo tienes que recordar que esto no desreferencia el puntero nulo. –