我正在将项目从 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 函数。
function TMsgConnection.GetNextMsgID: Integer;
begin
Inc(FLastMsgID);
Result := FLastMsgID;
end;
这些参数对我来说似乎都是有效的。我已设法将其范围缩小到与 GetNextMsgID 函数有关但不确定是什么的程度。如果我将从函数返回的值转换为整数,那么它编译得很好,但我不明白为什么我必须这样做。