我在IndyProtocols90
包中構建IdMessageHelper.pas
單元時收到錯誤。的LoadFromStream
和LoadFromFile
所有實例都聲稱有帶有簽名的一個問題:德爾福2005年,無法建立Indy 10
[錯誤] IdMessageHelper.pas(78):E2250有「LoadFromStream」可以用這些參數調用沒有重載版本
procedure Internal_TIdMessageHelper_LoadFromStream(AMsg: TIdMessage; AStream: TStream;
const AHeadersOnly: Boolean; const AUsesDotTransparency: Boolean);
var
LMsgClient: TIdMessageClient;
begin
if AUsesDotTransparency then begin
AMsg.LoadFromStream(AStream, AHeadersOnly);
end else
begin
// clear message properties, headers before loading
AMsg.Clear;
LMsgClient := TIdMessageClient.Create;
try
Internal_TIdMessageClientHelper_ProcessMessage(LMsgClient, AMsg, AStream, AHeadersOnly, False);
finally
LMsgClient.Free;
end;
end;
end;
我看到IdMessageHelper
是新的這個版本,但是這被稱爲(IdMessage.LoadFromStream
爲例)的方法,它的參數還沒有從過去的幾個版本改變 - 至少不是爲那些我有來源。
procedure TIdMessage.LoadFromStream(AStream: TStream; const AHeadersOnly: Boolean = False);
var
LMsgClient: TIdMessageClient;
begin
// clear message properties, headers before loading
Clear;
LMsgClient := TIdMessageClient.Create;
try
LMsgClient.ProcessMessage(Self, AStream, AHeadersOnly);
finally
LMsgClient.Free;
end;
end;
我很確定我刪除了所有以前的版本和軟件包,因爲這是乾淨的D2005安裝。
問題存在於「IdMessageHelper.pas」和「IdIMAP4.pas」中。我只是將支票更改爲「{$ IFDEF VCL_2006_OR_ABOVE}」,並且工作正常。謝謝。 – fourwhey
在D2005中引入了類助手,所以我仍然想明白爲什麼代碼在D2005中不起作用(特別是因爲失敗只發生在78行上,對嗎?第50行是另一個重載的調用,即'TIdMessage'方法,但它不會失敗,對吧?)。 –
如果你重命名'IdMessageHelper.pas'中的幫助器方法(比如說'LoadFrom ... Ex()'和'SaveTo ... Ex()'),但仍然在第50行調用原始的'TIdMessage'方法和78,這個問題在D2005中消失了嗎? –