檢索(的結構)從COM對象SAFEARRAY我試圖引用定義爲一個COM對象的方法:如何通過的ColdFusion 9
IEdmFile7::GetDerivedBOMs
Returns the derived (a.k.a. "named" or "saved") bills of materials associated with this file.
Prototype:
HRESULT GetDerivedBOMs([out,ref] SAFEARRAY (struct EdmBomInfo) *ppoBoms);
我在edmFile變量到IEdmFile7對象的引用。
當我<cfdump var="#edmFile#">
方法是可見的:
Method: GetDerivedBOMs([out]USERDEFINED, [out, retval]VOID)
當我嘗試調用方法(曾試圖通過許多不同PARAM類型):
<cfset edmFile.GetDerivedBOMs(???)>
它的錯誤與AutomationException: Member not found
。我只能假定它不能正確識別或投射參數。我如何正確地將一個引用傳遞給safearray(的結構體)?
(編輯從評論)
什麼,我已經嘗試了一些例子:
<cfset myObject = createObject("java","java.lang.Object").init()>
<cfset myArray = arrayNew(1)>
<cfset myRefArrayOfObjects = javaCast("java.lang.Object[]", myArray)>
<cfset myResultArray = edmFile.GetDerivedBOMs(myRefArrayOfObjects)>
結果:
Member Not Found Description: Automation Exception: Member Not Found
從註釋中的另一種嘗試:
<cfset myArray = ArrayNew(1)>
<cfset myArray = edmFile.GetDerivedBOMs()>
結果:
There are no methods with the specified method name and argument types.
Check your function and retry
如果您可以向我們顯示您嘗試過的調用和參數以及每個產生的錯誤,這將有所幫助。你有沒有嘗試用你的例子設置一個變量?像'',然後轉儲'edmResult'變量。 –
2013-02-12 21:09:03
在重讀您的示例時,爲什麼要將任何內容傳遞給該方法? safearray參數僅被標記爲輸出。對?所以,你是否試過'然後''然後轉儲'myArray'變量。 –
2013-02-12 21:24:06
Miguel-F:我嘗試過所有可能的事情,我無法發佈em全部...您的建議(即然後)返回:「There沒有指定方法名和參數類型的方法檢查你的函數,然後重試「 –
2013-02-13 20:42:56