safearray 的具體使用方法

2021-05-25 16:43:01 字數 1127 閱讀 3107

學會使用safearray也是很重要的,因為在ado程式設計中經常要用。它的主要目的是用於automation中的陣列型引數的傳遞。因為在網路環境中,陣列是不能直接傳遞的,而必須將其包裝成safearray。實質上safearray就是將通常的陣列增加乙個描述符,說明其維數、長度、邊界、元素型別等資訊。safearray也並不單獨使用,而是將其再包裝到variant型別的變數中,然後才作為引數傳送出去。在variant的vt成員的值如果包含vt_array|...,那麼它所封裝的就是乙個safearray,它的parray成員即是指向safearray的指標。safearray中元素的型別可以是variant能封裝的任何型別,包括variant型別本身。

使用safearray的具體步驟:

方法一:

包裝乙個safearray:

(1). 定義變數,如:

variant varchunk;

safearray *psa;

safearraybound rgsabound[1];

(2). 建立safearray描述符:

uisread=f.read(bval,chunksize);//read array from a file.

if(uisread==0)break;

rgsabound[0].celements =uisread;

rgsabound[0].llbound = 0;

psa = safearraycreate(vt_ui1,1,rgsabound);

(3). 放置資料元素到safearray:

for(long index=0;index讀取safearray中的資料的步驟:

(1). 用safearraygetelement乙個乙個地讀

byte buf[lisread];

for(long index=0;indexvarchunk.vt = vt_array|vt_ui1;

varchunk.parray = psa;

這種方法讀寫safearray都可以,它直接操縱safearray的資料緩衝區,比用safearraygetelement和safearrayputelement速度快。特別適合於讀取資料。但用完之後不要忘了呼叫::safearrayunaccessdata(psa),否則會出錯的。

學會使用SafeArray

學會使用safearray也是很重要的,因為在ado程式設計中經常要用。它的主要目的是用於automation中的陣列型引數的傳遞。因為在網路環境中,陣列是不能直接傳遞的,而必須將其包裝成safearray。實質上safearray就是將通常的陣列增加乙個描述符,說明其維數 長度 邊界 元素型別等資...

學會使用SafeArray

學會使用safearray也是很重要的,因為在ado程式設計中經常要用。它的主要目的是用於automation中的陣列型引數的傳遞。因為在網路環境中,陣列是不能直接傳遞的,而必須將其包裝成safearray。實質上safearray就是將通常的陣列增加乙個描述符,說明其維數 長度 邊界 元素型別等資...

關於SafeArray的使用說明

猛料資料,首先介紹safearray使用,在介紹safearray中的結構。看完該節文章,safearray的陌生感一掃而去。safearray 在ado程式設計中經常使用。它的主要目的是用於automation中的陣列型引數的傳遞。因為在網路環境中,陣列是不能直接傳遞的,而必須將其包裝成 safe...