プロジェクトをDelphi2006からDelphiXE2にアップグレードしている途中で、コンパイルエラーが発生しました。これらの引数で呼び出すことができる「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関数と関係があるところまで絞り込むことができましたが、何がわかりません。関数から返された値を整数にキャストすると、正常にコンパイルされますが、なぜそうしなければならないのかわかりません。