我正在将项目从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,那么它编译得很好,但是我不知道为什么我应该这样做。
答案 0 :(得分:2)
我的猜测是FConnection.SendMsg(cUpgradeError, Msg, FConnection.GetNextMsgID);
试图将FConnection.GetNextMsgID
解释为函数指针而不是函数结果。
将其更改为FConnection.SendMsg(cUpgradeError, Msg, FConnection.GetNextMsgID());
,以便明确表示您正在寻找功能结果。