如何将OleVariant转换为IDispatch派生?

时间:2013-04-19 18:16:22

标签: delphi interface ole

我今天带来了另一个让我头疼的问题,

我将DAO 3.6类型的库导入到我的delphi 7中,我开始看到许多有趣的界面,所以我面对有趣的问题。

每次类字段出现在另一个类的属性上时,它们都有正确的定义,我的意思是,他被定义为Fields,但在Index类中,在他描述其结构的所有字段参与者的部分中,属性字段不是字段,而是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;

问题是,有没有办法将类似OleVariant类型的Fields转换为在Fields接口类型上进行转换?

我非常感谢StackOverflow中的每一个帮助我

1 个答案:

答案 0 :(得分:5)

如果我正确理解您的问题,您就会问如何将变体转换为IDispatch。这样做:

IDispatch(V)

在您的情况下,我认为您有另一种类型,Fields来自IDispatch。你可以这样理解:

IDispatch(V) as Fields