Tôi duy trì một chương trình có thể được tự động thông qua COM. Nói chung khách hàng sử dụng VBS để làm kịch bản của họ, nhưng chúng tôi có một vài khách hàng sử dụng hỗ trợ ActiveX của Matlab và đang gặp sự cố gọi phương thức đối tượng COM với thông số NULL.Tương đương Matlab của NULL là gì khi nó gọi các phương thức COM/ActiveX?
Họ đã hỏi làm thế nào họ làm điều này trong Matlab - và tôi đã cọ rửa Mathworks' COM/ActiveX documentation trong một ngày hoặc lâu hơn và không thể tìm ra.
mã ví dụ họ có thể trông giống như thế này:
function do_something()
OurAppInstance = actxserver('Foo.Application');
OurAppInstance.Method('Hello', NULL)
end
nơi NULL
là nơi bằng ngôn ngữ khác, chúng tôi muốn viết NULL
hoặc nil
hoặc Nothing
, hoặc, tất nhiên, vượt qua trong một đối tượng. Vấn đề là điều này là tùy chọn (và chúng được thực hiện như là tham số tùy chọn trong hầu hết, nhưng không phải tất cả, trường hợp) - những phương pháp này mong đợi để có được NULL khá thường xuyên.
Họ nói với tôi rằng họ đã cố gắng []
(mà từ đọc sách của tôi dường như có khả năng nhất) cũng như ''
, Nothing
, 'Nothing'
, None
, Null
, và 0
. Tôi không biết có bao nhiêu trong số đó là những từ khóa Matlab hợp lệ - chắc chắn không có tác dụng nào trong trường hợp này.
Có ai giúp được không? Matlab của cú pháp cho một con trỏ null/đối tượng để sử dụng như là một tham số phương pháp COM là gì?
Cập nhật: Cảm ơn tất cả các thư trả lời từ trước tới nay! Thật không may, không ai trong số các câu trả lời dường như làm việc, thậm chí không libpointer
. Lỗi này là như nhau trong mọi trường hợp:
Error: Type mismatch, argument 2
tham số trong các thư viện kiểu COM này được mô tả trong RIDL như:
HRESULT _stdcall OurMethod([in] BSTR strParamOne, [in, optional] OurCoClass* oParamTwo, [out, retval] VARIANT_BOOL* bResult);
các coclass trong câu hỏi thực hiện một giao diện duy nhất giảm dần từ IDispatch.
Cảm ơn Peter. Khách hàng được đề cập nói rằng anh ta đã thử điều này và nó không hoạt động. Tôi đã cập nhật câu hỏi với nhiều thông tin hơn về thông tin lỗi và chữ ký phương thức cụ thể. –