討論區快速選單
知識庫快速選單
討論區最近新進100則主題 Excel也能做到大數據分析?
[ 回上頁 ] [ 討論區發言規則 ]
小弟才疏學淺問一個指標的問題
更改我的閱讀文章字型大小
作者 : kuolung(kuolung)
[ 貼文 143 | 人氣 1414 | 評價 130 | 評價/貼文 0.91 | 送出評價 35 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2017/3/14 上午 08:55:09
作者 : kuolung(kuolung)
[ 貼文 143 | 人氣 1414 | 評價 130 | 評價/貼文 0.91 | 送出評價 35 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2017/3/14 上午 09:01:21
對不起,剛剛沒有寫到就按出去對了

請問如果我在 import "xxx.dll" 後看到

xxx.tlh 中有一個 IDispatch 宣告函數

    HRESULT OnResponse (
     long intmark,
     unsigned long dwIndex,
     _bstr_t strIndex,
     const _variant_t & Handle,
     const _variant_t & aryValue );

那我在

BEGIN_DISPATCH_MAP(IPolaisEvents, CCmdTarget)
DISP_FUNCTION_ID(IPolaisEvents, "OnResponse", 1, OnResponse, VT_HRESULT, VTS_XXXX .... )
END_DISPATCH_MAP()

那一系列的 VTS_... 要如何對應



_bstr_t
const _variant_t &

這個變數型態要如何解釋和對應
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kuolung註記此篇回應為很有道理 2017/3/14 上午 09:36:10
>_bstr_t
>const _variant_t &
>
>這個變數型態要如何解釋和對應
https://msdn.microsoft.com/zh-tw/library/ms221069.aspx
https://msdn.microsoft.com/zh-tw/library/zthfhkd6.aspx - _bstr_t is a class that encapsulated above data type
 

https://msdn.microsoft.com/zh-tw/library/x295h94e.aspx it is also a class that encapsulated variant data type
https://msdn.microsoft.com/en-us/library/office/gg251448.aspx

作者 : kuolung(kuolung)
[ 貼文 143 | 人氣 1414 | 評價 130 | 評價/貼文 0.91 | 送出評價 35 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2017/3/15 上午 09:15:41
請教看了以下的文件,

https://msdn.microsoft.com/zh-tw/library/ms221069.aspx
https://msdn.microsoft.com/zh-tw/library/zthfhkd6.aspx - _bstr_t is a class that encapsulated above data type

在最後一行文字是這樣的 :

if you pass a simple Unicode (wchar) string as an argument to a COM function that is expecting a BSTR, the COM function will fail.

不太了解,因為我的專案預設字元集是 Unicode :

    long Login (
     long FunID,
     _bstr_t Userdata,
     _bstr_t UserPwd );

對於這樣的函數 :
有一個 com 用
    long lRet;

    BSTR bstrID = ::SysAllocString(L"Sxxx ");
    BSTR bstrPasswd = ::SysAllocString(L"xxx");

    iRet = ISObj->Login(bstrSid, bstrPasswd);

可以正常執行

另外一家的 com 也是

    long lRet;

    BSTR bstrID = ::SysAllocString(L"Sxxx ");
    BSTR bstrPasswd = ::SysAllocString(L"xxx");

    lRet = IPObj->Login((int)0, bstrID, bstrPasswd);

卻無法執行

作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2017/3/15 上午 10:53:20
could you post the error message ?
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kuolung註記此篇回應為最佳解答 2017/3/15 上午 10:58:01
if you pass a simple Unicode (wchar) string as an argument to a COM function that is expecting a BSTR, the COM function will fail.
>> seeing the following url - http://stackoverflow.com/questions/20386123/problems-passing-a-bstr-from-native-c-to-managed-c-sharp-dll to understand why the fail raises
 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11070 
2 Raymond 10090 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1870 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.140625