今天朋友遇到了_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大小的...
關於 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...