Delphi 2006에서 Delphi XE2로 프로젝트를 업그레이드하는 중에 컴파일 오류가 발생했습니다 'SendMsg'의 오버로드 된 버전이 없습니다. '이 인수로 호출 할 수 있습니다. 이것은 문제가있는 코드입니다.이 인수로 호출 할 수있는 '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 기능과 관련이 있지만 확실하지 않은 부분까지 범위를 좁혔습니다. 함수에서 반환 된 값을 Integer로 캐스팅하면 컴파일이 잘되지만 왜해야하는지 알 수 없습니다.
글쎄, 당신이 제공 한 코드가 이미 모든 정수 값이기 때문에 "캐스트로 정수"에 대해 정확히 무슨 뜻인지 모르겠으므로'GetNextMsgID' 함수라고 생각하지 않습니다. –
이 절차에서 전달 된 값 유형을 제공 할 수 있습니까? ''cUpgradeError'는'Msg'와 같은'String' 타입이어야하며, 여러분이 위에 게시 한'FConnection.GetNextMsgID'는 이미 정수입니다. –
정확하게, 나는 또한 혼란 스럽다. 코드를 'FConnection.SendMsg (cUpgradeError, Msg, Integer (FConnection.GetNextMsgID));로 변경하면 컴파일됩니다. – energ1ser