我正在尝试使用带有DOUBLE变量的函数Sign(),但它保留 给我错误的消息"模糊的超载呼叫,以及#34;""。
尝试使用INTEGER变量或任何变量时也会发生这种情况。
为什么会发生这种情况,如何解决?
我使用的代码如下:
var
CB : double;
SignCB : TValueSign;
begin
CB := Random(1000)-500;
SignCB := Sign(CB);
end;
答案 0 :(得分:2)
您尝试呼叫的Sign
功能是Math.Sign
。实际上,对于常用的数字类型,该函数有多个重载版本。
如果代码中唯一可见的Sign
是Math
单元中的重载,那么您将不会遇到该错误。唯一合理的结论是你定义了另一个名为Sign
的函数冲突。
一种解决方案是完全限定函数调用。请致电Math.Sign()
而不是Sign()
。
或许更好的解决方案是更改Sign
功能的名称。通过使用与原始RTL函数相同的名称,您要求将来混淆。我建议你采取后一种做法。