在Windows平台下的编程,微软提代了一个Variant的数据类型,这个类型支持OLE接口和数据,问题就是当Variant是一个接口时,如何在运行时调用接口的方法,举个例子:
我定义了一个Word
var
word:Variant;
word := CreateOLE("WORD");
Word.Open; //这是在程序里调用,可以用,但如何在运行时改变这个方法名称?即Open方法是一个字符串?
也就是你的方法具有不确定性,而且不可穷举了?
比如那个方法有可能是将来才会有的新方法?
调用了variants.pas 的_DispInvoke -->comObj的 VarDispInvoke
其中涉及Type Library, Ole Automation及Dispatch interface方面的问题。
you can visit unit of Variants
建议你看看《Delphi COM 深入编程》。
这个东西应该是跟DELPHI的编译方法有关系吧,不知谁了解这方面的知识,我也知道支持Variant的实例都实现了IDispatch接口,里面的方法调用都是通过去时Invoke方法来执行的,但如何准备Invoke调用中的参数呢?
GETVERB是得到方法. DoVerb
当进行Variant类型的操作时,编译器将其映射成VariantManager对应的操作.
Variant类型的方法执行,实际是VariantManager的DispInvoke,
也就是对应到variants单元的_DispInvoke方法..你可以查看其中源码.
不外乎IDispatch方式调用的封装.
BCB中用CreateObject创建一个Variant对象,然后可以用OleFunction、OleProcedure、OleGetProperty、OlePutProperty调用函数或设置属性,可以运行时设定函数名称。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。