0
我想將報警名稱從COM列表傳遞到ASP頁面中使用的VBScript。如果方法名稱是GetAlarms
,該方法的簽名是什麼?由GetAlarms
返回的警報數量將有所不同。從com對象返回數組
VBScrip是否支持安全數組?
我想將報警名稱從COM列表傳遞到ASP頁面中使用的VBScript。如果方法名稱是GetAlarms
,該方法的簽名是什麼?由GetAlarms
返回的警報數量將有所不同。從com對象返回數組
VBScrip是否支持安全數組?
在* .idl文件中的聲明是這樣的:
[id(1)] HRESULT GetAlarms([out,retval] SAFEARRAY(VARIANT)* pAlarms);
相應的C++方法是這樣的:
STDMETHODIMP CMyClass::GetAlarms(SAFEARRAY** pAlarms)
{
CComSafeArray<VARIANT> alarms(3);
CComVariant value;
value = L"First Alarm";
alarms.SetAt(0, value);
value = L"Second Alarm";
alarms.SetAt(1, value);
value = L"Third Alarm";
alarms.SetAt(2, value);
*pAlarms = alarms.Detach();
return S_OK;
}
最後,這裏是一個示例VBScript使用上述方法:
Set obj = CreateObject("MyLib.MyClass")
a = obj.GetAlarms
For i = 0 To UBound(a)
MsgBox a(i)
Next
在ASP中,當然,你會使用別的東西而不是MsgBox
。
@Maanu:爲什麼標記爲C++?在C++中,你不能從函數返回數組。 – 2011-06-14 03:56:50
@Als除非他的意思是'SAFEARRAY'。 – 2011-06-14 03:59:40
@Als:我們在C++中編寫COM組件 – Maanu 2011-06-14 04:23:18