我希望能够从R脚本中启动并调用COM对象(显然在Windows中)。有一个名为RDCOM http://www.omegahat.net/RDCOMClient/但
的库它不支持VARIANT数据类型 - 以及COM对象 期望VARIANT作为参数并返回其中的数组
它维护了吗?有积极的选择吗?
我需要调用的是.idl文件中定义的函数(idl文件被编译为创建COM对象 - 除非你想知道对象的确切深度,否则不重要)
[id(3), helpstring("method GetQuestionList")] HRESULT GetQuestionList([out] VARIANT* nQuestionCount,[out] VARIANT* arrNames, [out] VARIANT* arrIndents, [out] VARIANT* arrTypes);
在这个方法中,字段通过引用传递 - 在VB中你可以像这样调用它
Dim myObject = CreateObject("AskiaAPI.Analyse") Dim arrIndents, nQuestionCount, arrNames, arrTypes As Object myObject.GetQuestionList(nQuestionCount, arrNames, arrIndents, arrTypes) Dim nQuestion For nQuestion = 0 To nQuestionCount - 1 lstResults.Items.Add(nQuestion & ": " & arrNames(nQuestion)) Next nQuestion
在上面的代码中,变量nQuestionCount,arrNames,arrIndents,arrTypes由GetQuestionList初始化(这就是它们通过引用传递的原因)。在该示例中,lstResults将是用于显示其中一个参数的内容的ListBox。
欢迎任何提示或想法!