题目有点说得不清除,具体说明:IMyInterfaceA = interface
procedure ProcA;
end;IMyInterfaceB = interface
procedure ProcB;
end;TMyInterfaceObj = class(TInterfacedObject, IMyInterfaceA, IMyInterfaceB)
procedure ProcA;
procedure ProcB;
end;function MyInterfaceAFactory: IMyInterfaceA;
begin
Result := TMyInterfaceObj.Create;
end;var
Obj : IMyInterfaceA;
begin
Obj := MyInterfaceFactory;
// 现在我希望能够访问Obj的ProcB函数,该如何做,我把Obj强制转换为TMyInterfaceObj然后访问ProcB会出错,引发异常,而且是访问到别的函数里去了
end;
procedure ProcA;
end;IMyInterfaceB = interface
procedure ProcB;
end;TMyInterfaceObj = class(TInterfacedObject, IMyInterfaceA, IMyInterfaceB)
procedure ProcA;
procedure ProcB;
end;function MyInterfaceAFactory: IMyInterfaceA;
begin
Result := TMyInterfaceObj.Create;
end;var
Obj : IMyInterfaceA;
begin
Obj := MyInterfaceFactory;
// 现在我希望能够访问Obj的ProcB函数,该如何做,我把Obj强制转换为TMyInterfaceObj然后访问ProcB会出错,引发异常,而且是访问到别的函数里去了
end;
解决方案 »
- 急,,在线等 一个问题???
- 问一个关于动态创建数据库表的问题,请各位高手帮忙,急呀!!!
- 字符串截取。
- 急救!!!CORBA客户端连接问题,
- 使用MSAGENT时,怎么才能在屏幕上出现两个一样的人物?比如两个MERLIN???
- 在线等待:1:如何从TDateTime中提取出年份,月份,号数??2:如何比较两个TDateTime类型的次序,比如怎样才知道2002-6-1在2002-6-4的前面??
- (100%结贴)WebBrowser怎么清空页面(在线等。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。)
- 項目做完了!交流交流....
- Delphi中有没有过滤类?
- 如何在一个程序启动的同时启动一个输入法,比如全拼了,类似accsess里一样?
- 做程序员真郁闷,进来提点意见。。。。。
- 这样做错在哪 里呀:
刚看了帖子“请大家帮个忙,看有没有快速了解面向对象的编程思路的东东”
http://search.csdn.net/Expert/topic/1608/1608117.xml?temp=.9106409知道了用AS可以进行接口间的安全转换。用AS解决了问题
MyInterfaceFactory對象工廠它創造的對象必需是實現IMyInterfaceB的接口!!!
否則, 還是會出錯!!!var
Obj : IMyInterfaceA;
begin
Obj := MyInterfaceFactory; //創造的對象必需是實現IMyInterfaceB的接口!!!
在DELPHI中,就可以很简单的用AS运算符语法使用它。。var
aintf : IMyInterfaceA;
bintf : IMyInterfaceB;
begin
aintf := MyInterfaceFactory;
bintf := aintf as IMyInterfaceB;
或者写成
OleCheck(aintf.QueryInterface(IMyInterfaceB,bintf)); bintf.ProcB;
释放的时候是调用Free来释放的。