运算符接口时,运算符不适用于此操作数类型

时间:2012-09-13 18:05:26

标签: delphi delphi-xe2

我在Delphi XE2中过去几天一直在使用第三方服务,而且几乎已经完成了。我遇到了一个绝对难以理解的问题,我认为应该有非常明显的答案。我希望另一双眼睛可以告诉我我的问题是什么。

我有这个界面:

IWorshipTeamEvent = Interface(IInterface)
  function GetId : integer;
  function GetName : string;
  function GetTeamId : integer;
  function GetStartDate : TDate;
  function GetEndDate : TDate;
  function GetStartTime : TTime;
  function GetEndTime : TTime;
  function GetSets : IWorshipTeamSetList;

  property Id : integer read GetId;
  property Name : string read GetName;
  property TeamId : integer read GetTeamId;
  property StartDate : TDate read GetStartDate;
  property EndDate : TDate read GetEndDate;
  property StartTime : TTime read GetStartTime;
  property EndTime : TTime read GetEndTime;
  property Sets : IWorshipTeamSetList read GetSets;
end;

然后在同一单元的另一个类中,我试图在此函数中返回IWorshipTeamEvent

function TWorshipTeamEventList.GetEvent(index: Integer) : IWorshipTeamEvent;
begin
  //fEvents is a TInterfaceList that contains only IWorshipTeamEvents
  Result := fEvents[index] as IWorshipTeamEvent;
end;

此时,我收到编译器错误Operator not applicable to this operand type。我尝试了一些方法,比如创建一个temp变量,其类型为IXmlResponseType并且正在进行

temp := fEvents[index] as IXmlResponseType;
Result := nil;

汇编了,所以我尝试创建temp类型为IWorshipTeamEvent并且

的<{1}}
temp := fEvents[index] as IWorshipTeamEvent;
Result := nil;

没有编译。

非常感谢任何建议

1 个答案:

答案 0 :(得分:2)

我在另一个问题上阅读this回答,该问题指出GUID丢失了。在为IWorshipTeamEvent接口生成GUID之后,所有内容都会按预期编译并运行。