我在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中消失了吗? –