没有可以使用这些参数调用的'SendMsg'的重载版本

时间:2013-01-19 02:52:09

标签: delphi delphi-xe2

我正在将项目从Delphi 2006升级到Delphi XE2并遇到编译错误没有可以使用这些参数调用的'SendMsg'的重载版本。 这是问题所在的代码。

procedure TMessageComms.UpgradeError(Msg: String);
begin
  FConnection.SendMsg(cUpgradeError, Msg, FConnection.GetNextMsgID);
end;

SendMsg方法如下所示。

procedure SendMsg(ACommand, AParamStr : String; AMsgID : Integer); overload;

procedure TMsgConnection.SendMsg(ACommand, AParamStr: String; AMsgID: Integer);
begin
  // construct message
  // send message
end;

cUpgradeError是一个声明如此的const。

 cUpgradeError = 'UpgradeError';

这是GetNextMsgID函数,它返回一个Integer。

function TMsgConnection.GetNextMsgID: Integer;
begin
  Inc(FLastMsgID);
  Result := FLastMsgID;
end;

这些参数对我来说都是有效的。 我已经设法将其缩小到与GetNextMsgID函数有关但不确定是什么的程度。如果我将从函数返回的值转换为Integer,那么它编译得很好,但是我不知道为什么我应该这样做。

1 个答案:

答案 0 :(得分:2)

我的猜测是FConnection.SendMsg(cUpgradeError, Msg, FConnection.GetNextMsgID);试图将FConnection.GetNextMsgID解释为函数指针而不是函数结果。

将其更改为FConnection.SendMsg(cUpgradeError, Msg, FConnection.GetNextMsgID());,以便明确表示您正在寻找功能结果。