use*_*868 1 delphi ole interface
我今天提出另一个问题,这让我很头疼,
我确实将DAO 3.6类型库导入了我的delphi 7,并且开始看到许多有趣的界面,因此我遇到了一个有趣的问题。
每当类Fields出现在另一个类的属性上时,它们都有正确的定义,我的意思是,他被定义为Fields,但是在Index类中,在他描述其结构的所有字段参与者的部分中,属性字段不会出现作为Fields,但作为OleVariant。
查看与TableDefs的区别,这些区别具有Fields属性并与Index定义进行比较:
_TableDef = interface(_DAO)
...
property Fields: Fields read Get_Fields;
...
end;
_Index = interface(_DAO)
...
property Fields: OleVariant read Get_Fields write Set_Fields;
...
end;
Run Code Online (Sandbox Code Playgroud)
问题是,是否有一种方法可以将看起来像OleVariant类型的Field强制转换为Fields接口类型?
我非常感谢StackOverflow中的所有帮助
如果我正确理解了您的问题,那么您正在询问如何将变体转换为IDispatch。这样做:
IDispatch(V)
Run Code Online (Sandbox Code Playgroud)
在您的情况下,我认为您还有另一种类型,Fields它源自IDispatch。您可以像下面这样:
IDispatch(V) as Fields
Run Code Online (Sandbox Code Playgroud)