2009-08-06 2 views
2

일부 메서드가 BSTR 포인터로 다시 전달되는 타사 COM 개체로 작업하고 있습니다. VBscript는 Variant 형식의 Object.Method (sMyString)과 같은 방식으로 사용하려고 시도하기 때문에 "형식 불일치"오류로 끝납니다."[in, out] BSTR *"매개 변수가있는 VBScript "형식 불일치"문제

이 오류는 VBscript 인터프리터가 아닌 COM 개체에서 생성 된 것으로 의심됩니다. 개체가 포인터 대신 문자열을 가져 오기 때문입니다. 해결 방법은 문자열 배열을 정의하려고했지만 여전히 같은 오류입니다.

누군가 비슷한 문제가 있었는지 궁금 해서요. 어떤 해결 방법을 사용했는지 궁금합니다.

강조하기 만하면됩니다. COM 객체를 제어 할 수 없습니다. 공급 업체의 신청서에 있습니다. 나는 그것을 "있는 그대로"사용해야합니다.

VBScript를 다른 언어에 비해 제한 비트를 사용할 수있는 유형, 알버트 Gareev

답변

0

래퍼 해결 방법을 고려한 결과 기존 COM 자동화 개체를 사용하면 자체 API를 개발하는 것보다 몇 가지 장점이 있다는 것을 알았습니다.

다른 목적으로 Excel.Application 개체를 이미 사용하고 있으므로 VBA에서 몇 가지 매크로를 만들고 필요에 따라 실행합니다. 내 블로그 게시물에서

자세한 내용 :

http://automation-beyond.com/2009/09/23/gp-automation-vbscript-limitation/

http://automation-beyond.com/2009/09/21/gp-qtp-automation-sanscript/

감사합니다, 알버트 Gareev

6

규칙을 주셔서 감사합니다. 귀하의 경우에는 [in, out] BSTR *입니다. 지원되지 않습니다. [out] 매개 변수에 허용되는 유일한 유형은 VARIANT *입니다. VBScript는 해당 위치에 BSTR 유형을 지원하기 위해 유형이 [out, retval]이어야합니다. 물론 기능 당 하나의 [retval] 만 가질 수 있으므로 다소 제한적입니다.

상황에 따라 서버 코드를 수정할 수 없기 때문에 문제가 발생합니다. 내가 뭘 할 것이 당신이 부를 수있는 무언가에 API를 래핑 C + +에서 COM 래퍼를 작성하는 것입니다. COM 랩퍼는 [out] BSTR *[out] VARIANT * 또는 사용 가능한 다른 것으로 변경할 수 있습니다.

관련 문제