關於 variant t的賦值問題

2021-06-07 04:33:27 字數 745 閱讀 9408

好久沒在空間發文章了。。。今天朋友遇到了_variant_t型別的賦值問題、整整幫他除錯了1個多小時啊。。。

這方面的問題網上也沒什麼好答案、自己琢磨了乙個小時總算明白了

_variant_t vtdata;

char *ptdata = null;

//賦值過程先略過、這方面資料好找的

//ptdata 賦上vtdata大小的空間

//ptdata = new char[ldatasize+1];

//也可以malloc這些就不說了

...//vtdata用編譯器的watch可以看到是陣列.

//一開始想都沒想直接memcpy(ptdata,&vtdata,ldatasize);

//然後發現賦值沒成功

//糾結了乙個多小時後用以下方式成功

memcpy(ptdata,data.parray[0].pvdata,ldatasize);

//第二個引數是不是感覺很複雜呢?

//_variant_t 獲取到比較大的型別時、會儲存到內部的safearray屬性裡去

//然後_variant_t.parray[0] 他內部就是safearray變數

//網上查了下safearray貌似是標準容器之類的東東。。。

//這種東東雖然是陣列他都會提供返回頭指標的方式、

//果然找到了pvdata這個東東、pvoid型別、空的void型別指標嘛。。。

safearray資料的首位址,型別為(void *)

關於 variant t的賦值問題

今天朋友遇到了 variant t型別的賦值問題 整整幫他除錯了1個多小時啊。這方面的問題網上也沒什麼好答案 自己琢磨了乙個小時總算明白了 variant t vtdata char ptdata null 賦值過程先略過 這方面資料好找的 ptdata 賦上vtdata大小的空間 ptdata n...

關於 variant t變數

variant t類封閉了variant資料型別,variant是乙個結構體型別,我們可以看一下它的定義 typedef struct tagvariant vt用來儲存儲存變數的型別,聯合體用來儲存對用型別的值 對 variant t變數初始化呼叫的是 variant t的建構函式,我們一般習慣於...

關於scrollLeft的賦值問題

scrolltop和scrollleft屬性只有當他內部元素超出父級元素的時候才有效,否則將一直為0,設定了也沒用。set adorst server.createobject adodb.recordset sql select top 20 from db page where pagemode...