您好,登錄后才能下訂單哦!
這篇文章主要介紹“VB如何自定義類型參數(shù)”,在日常操作中,相信很多人在VB如何自定義類型參數(shù)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”VB如何自定義類型參數(shù)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
VB自定義類型參數(shù)的傳遞
用戶自定義類型在VB中是一種重要的數(shù)據(jù)類型,它為編程者提供了很大的靈活性,使開發(fā)人員可以根據(jù)需要構(gòu)造自己的數(shù)據(jù)結(jié)構(gòu)。它相當(dāng)于C/C++中的結(jié)構(gòu)類型(structure)。在VB中,允許程序員以傳址的方式將自定義數(shù)據(jù)類型參數(shù)傳入動態(tài)庫,DLL過程也可以將修改后的參數(shù)返回VB程序。但是,在VB中仍然不支持以傳值的方式傳遞VB自定義類型參數(shù)。
傳遞VB自定義類型參數(shù)時,必須確保VB中的數(shù)據(jù)類型的成員與動態(tài)庫中的結(jié)構(gòu)成員是一一對應(yīng)的,所占空間也必須嚴(yán)格一致。這里所說的一一對應(yīng),不僅是指VB 中的所有結(jié)構(gòu)成員在動態(tài)庫的結(jié)構(gòu)中都必須有對應(yīng)的元素,而且它們在數(shù)據(jù)結(jié)構(gòu)中定義的順序也必須嚴(yán)格一致,這是VB中使用的"數(shù)據(jù)結(jié)構(gòu)成員對齊方式"決定的。在VB 中,數(shù)據(jù)結(jié)構(gòu)使用雙字對齊方式(4-byte alignment),因此,在用戶自己生成用于VB調(diào)用的動態(tài)連接庫時,也必須把編譯選項"structure member alignment" 設(shè)為4字節(jié)(如前文所述)。
所謂結(jié)構(gòu)成員對齊方式是指一個數(shù)據(jù)結(jié)構(gòu)內(nèi)部,其成員的排列方式。譬如,在VB中,其對齊方式是4字節(jié),這就好象在一個數(shù)據(jù)結(jié)構(gòu)內(nèi)部分成了很多個4字節(jié)大小的小單元,如果相鄰兩個或多個數(shù)據(jù)成員的大小可以放在一個單元中,那么就放在一起;否則這些小單元中可能 會出現(xiàn)未用的空字節(jié)。我們來看下面一個數(shù)據(jù)類型:
Type TestType m1 as Integer m2 as Byte m3 as Long End Type
它的三個成員的大小加起來是2+1+4=7。但是,由于m1和m2的字節(jié)總長度是3,小于 4,它 們就存放于一個單元中;但該單元剩下的一個字節(jié)不足以放下一個Long型的成員m3,于是m3 就被放在下一個單元中,它們之間就有了一個未用的空字節(jié);因此,整個結(jié)構(gòu)所占實際長度是8 字節(jié)。同理,如果將m3和m2的位置交換一下,它所占的尺寸就變成了9字節(jié)??梢?,成員在結(jié)構(gòu) 中的聲明順序也是非常重要的。
另外,在VB 中還可以把一個函數(shù)的指針傳遞到動態(tài)庫中,方法也并不復(fù)雜。但筆者強烈建議***不要這么做,因為這樣一來VB 應(yīng)用程序就幾乎完全喪失了它所應(yīng)有的安全性。如果 確實需要傳遞函數(shù)指針的話,那么還是編一個C/C++ 的程序來完成這項工作吧。
到此,關(guān)于“VB如何自定義類型參數(shù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。