模糊的超载呼号'签署'德尔福

时间:2014-10-21 00:32:51

标签: delphi compiler-errors sign

我正在尝试使用带有DOUBLE变量的函数Sign(),但它保留 给我错误的消息"模糊的超载呼叫,以及#34;""。

尝试使用INTEGER变量或任何变量时也会发生这种情况。

为什么会发生这种情况,如何解决?

我使用的代码如下:

var
  CB : double;
  SignCB : TValueSign;
begin
  CB := Random(1000)-500;
  SignCB := Sign(CB);  
end;

1 个答案:

答案 0 :(得分:2)

您尝试呼叫的Sign功能是Math.Sign。实际上,对于常用的数字类型,该函数有多个重载版本。

如果代码中唯一可见的SignMath单元中的重载,那么您将不会遇到该错误。唯一合理的结论是你定义了另一个名为Sign的函数冲突。

一种解决方案是完全限定函数调用。请致电Math.Sign()而不是Sign()

或许更好的解决方案是更改Sign功能的名称。通过使用与原始RTL函数相同的名称,您要求将来混淆。我建议你采取后一种做法。