精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

VB.NET字符串數組全面分析

開發 后端
這里介紹當需要把一個VB.NET字符串數組整個傳入動態連接庫時,情況就變得復雜多了,用傳遞簡單數據類型數組的方式來傳遞VB.NET字符串數組是行不通的。

VB.NET有很多值得學習的地方,這里我們主要介紹VB.NET字符串數組,包括介紹將VB.NET字符串數組轉換成字節數組等方面。

大部分的DLL過程(包括Windows 95 API中的所有過程)使用LPSTR類型字符串,這是指向標準的以null結束的C語言字符串的指針,它也被稱為ASCIIZ字符串。LPSTR 沒有前綴。下圖顯示了一個指向ASCIIZ字符串的LPSTR。

如果DLL過程需要一個LPSTR(指向以null結束的字符串的指針)作為參數,可以在 VB 中將一個字符串以傳值的方式傳遞給它。因為指向BSTR的指針實際指向以null值結束的字符串的第一個數據字節,所以對于DLL過程來說,它就是一個 LPSTR。這樣傳入動態連接庫的字符串,DLL過程也可以對它進行修改,盡管它是以傳值方式傳入的。只有當DLL過程需要一個指向LPSTR的指針時,才以傳址的方式傳入字符串,這時DLL過程得到的是一個指向字符串指針的指針(相當于C/C++中的char**),而不是通常所用的字符串的首地址(相當于C/C++中的char*)。

當需要把一個VB.NET字符串數組整個傳入動態連接庫時,情況就變得復雜多了,用傳遞簡單數據類型數組的方式來傳遞VB.NET字符串數組是行不通的。當我們以傳值的方式將一個VB.NET字符串數組的第一個元素傳進動態連接庫時,DLL過程得到的實際上是該元素壓入堆棧段后的地址,而不是數據段中整個數組的首地址。也就是說,這時DLL過程只能得到數組的第一個元素,而無法訪問整個數組。而以傳址方式傳入第一個元素時,DLL過程只能得到指向該元素在堆棧段中地址的指針,同樣無法訪問整個數組。這不能不說是VB的一個不足。因此,在程序設計中,如果確實需要將整個VB.NET字符串數組傳入動態庫,就必須采取其它方法。

我們知道,在VB中,有一種Byte數據類型。每個Byte型變量占一個字節,不含符號位,因 此所能表示的范圍為0到255。這種數據類型是專門用于存放二進制數據的。為了將整個VB.NET字符串數組傳進動態庫,可以用字節數組來保存字符串。由于Byte是一種簡單數據類型,因此字節數組的傳遞是非常簡單的。首先,需要把一個字符串正確地轉變成一個字節數組。這要涉及一 些字符集的知識。Windows 95和VB使用不同的字符集,Windows 95 API使用的是ANSI或DBCS 字符集,而VB使用的則是Unicode字符集。所謂ANSI字符集,是指每個字符都用一個字節表示,因此最多只能有28=256個不同的字符,這對于英語來說已經足夠了,但不能完全支持其它語言。DBCS字符集支持很多不同的東亞語言,如漢語、日語和朝鮮語,它使用數字0-255表示ASCII 字符,其它大于255或小于0的數字表明該字符屬于非拉丁字符集;在DBCS中,ASCII字符的長度是一個字節,而漢語、日語和其它東亞字符的長度是2個字節。而Unicode字符集則完全用兩個字節表示一個字符,因此最多可以表示216=65536個不同字符。也就是說,ANSI字符集中所有的字符都只占一個字節,DBCS字符集中ASCII字符占一個字節,漢字占兩個字節,Unicode 字符集中每個字符都占兩個字節。由于VB與WindowsAPI使用的字符集不同,因此在進行字符串到字節數組的轉換時,當用Asc函數取得一個字符的字節碼后,需要判斷它是否是一個ASCII 字符;如果是ASCII字符,則在轉換后的字節數組中就只占一個字節,否則要占兩個字節。

下面給出了轉換函數:GetChar Byte得到一個字符的高字節或低字節,它的第一個參數是一個字符的ASCII碼,第二個參數是標志取高字節還是低字節;StrToByte按DBCS或ANSI格式將一個字符串轉換成一個字節數組,第一個參數是待轉換的字符串,第二個參數是轉換后的一個定長字節數組,若該數組長度不足以存放整個字符串,則截去超長的部分;ChangeStrAryToByte 利用前兩個函數將VB.NET字符串數組轉換成字節數組,第一個參數是定長的VB.NET字符串數組,其中每個元素都是一個字符串(各個元素包含的字符數可以不同),第二個參數是一個變長的字節數組, 保存轉換后的結果。

  1. Function GetCharByte(ByVal OneChar As Integer, 
    ByVal IsHighByte As Boolean) As Byte 
  2. ' 該函數獲得一個字符的高字節或低字節  
  3. If IsHighByte Then  
  4. If OneChar >= 0 Then  
  5. GetCharByte = CByte(OneChar \ 256)  
  6. '右移8位,得到高字節  
  7. Else  
  8. GetCharByte = CByte((OneChar  
  9. And &H7FFF) \ 256) Or &H80  
  10. End If  
  11. Exit Function  
  12. Else  
  13. GetCharByte = CByte(OneChar And &HFF)  
  14. '屏蔽掉高字節,得到低字節  
  15. Exit Function  
  16. End If  
  17. End Function  
  18. Sub StrToByte(StrToChange As String, ByteArray() As Byte)  
  19. '該函數將一個字符串轉換成字節數組  
  20. Dim LowBound, UpBound As Integer  
  21. Dim i, count, length As Integer  
  22. Dim OneChar As Integer  
  23. count = 0 
  24. length = Len(StrToChange)  
  25. LowBound = LBound(ByteArray)  
  26. UpBound = UBound(ByteArray)  
  27. For i = LowBound To UpBound  
  28. ByteArray(i) = 0 '初始化字節數組  
  29. Next  
  30. For i = LowBound To UpBound  
  31. countcount = count + 1  
  32. If count <= length Then  
  33. OneChar = Asc(Mid(StrToChange, count, 1))  
  34. If (OneChar > 255) Or (OneChar < 0) Then  
  35. '該字符是非ASCII字符  
  36. ByteArray(i) = GetCharByte(OneChar, True) '得到高字節  
  37. ii = i + 1  
  38. If i <= UpBound Then ByteArray(i)  
  39. = GetCharByte(OneChar, False)  
  40. '得到低字節  
  41. Else  
  42. '該字符是ASCII字符  
  43. ByteArray(i) = OneCha  
  44. End If  
  45. Else  
  46. Exit For  
  47. End If  
  48. Next  
  49. End Sub  
  50.  
  51. Sub ChangeStrAryToByte(StrAry()  
  52. As String, ByteAry() As Byte)  
  53. '將字符串數組轉換成字節數組  
  54. Dim LowBound, UpBound As Integer  
  55. Dim i, count, StartPos, MaxLen As Integer  
  56. Dim TmpByte() As Byte  
  57. LowBound = LBound(StrAry)  
  58. UpBound = UBound(StrAry)  
  59. count = 0 
  60. ReDim ByteAry(0)  
  61. For i = LowBound To UpBound  
  62. MaxLen = LenB(StrAry(i))  
  63. ReDim TmpByte(MaxLen + 1)  
  64. ReDim Preserve ByteAry(count + MaxLen + 1)  
  65. Call StrToByte(StrAry(i), TmpByte) '轉換一個字符串  
  66. StartPos = count 
  67. Do  
  68. ByteAry(count) = TmpByte(count - StartPos)  
  69. countcount = count + 1  
  70. If ByteAry(count - 1) = 0 Then Exit Do Loop   
  71. '將每一個字符串對應的字節數組按順序填入結果數組中  
  72. ReDim Preserve ByteAry(count - 1)  
  73. Next i  
  74. End Sub 

這樣,VB.NET字符串數組就全部轉換成了字節數組,然后只要將字節數組的第一個元素以傳址的方式傳入動態連接庫,DLL過程就可以正確地訪問數組中的所有字符串了。但是,使用這種方法,當DLL過程處理結束返回VB時,VB得到的仍然是字節數組。如果需要在VB中再次得到該字節數組表示的字符串,還要把整個字節數組重新以0為分割符分成多個子數組(每個子數組都對應原來字符串數組中的一個元素),然后使用VB函數StrConv將每個子數組轉換成字符串(轉換時第二個參數選vbUnicode),就可以顯示或進行其它操作了。例如,其中一個子數組的名字是SubAry,則函數StrConv(SubAry,vbUnicode)就返回了它所對應的字符串。

總之,VB應用程序和動態庫間字符串參數的傳遞是一個比較復雜的過程,使用時要非常謹慎。同時應盡可能避免傳遞字符串數組類型的參數,因為這很容易引起下標越界、堆棧溢出等嚴重錯誤。

【編輯推薦】

  1. VB.NET使用Alias子句簡介
  2. 詳細描述VB調用動態連接庫
  3. 敘述VB.NET創建控件數組
  4. 淺析VB.NET繪制GDI圖形的方法
  5. VB.NET Declare語句學習筆記
責任編輯:佚名 來源: weaseek
相關推薦

2009-10-27 09:45:03

VB.NET數組

2009-10-28 10:04:53

VB.NET XmlW

2009-10-14 15:20:21

VB.NET窗體指針

2009-11-04 10:54:53

VB.NET MOVE

2009-10-29 15:16:02

VB.NET文件傳送

2009-10-15 10:57:16

VB.NET Text

2009-11-02 15:57:36

VB.NET WEB

2010-01-08 15:11:22

VB.NET字符串轉義

2010-01-13 15:12:04

VB.NET字符串合并

2009-11-10 12:06:17

VB.NET字符串函數

2009-10-14 15:44:04

VB.NET字節數組

2009-10-28 17:44:31

VB.NET語言

2010-01-11 13:42:20

VB.NET字符串加密

2009-11-02 14:48:45

VB.NET HOOK

2009-10-15 11:42:05

VB.Net賦值語句

2009-11-10 16:46:52

VB.NET指針應用

2009-11-02 17:12:01

VB和VB.NET

2009-10-26 14:06:03

2009-10-21 09:10:52

VB.NET壓縮

2009-10-15 17:50:48

VB.NET調用API
點贊
收藏

51CTO技術棧公眾號

亚洲va久久久噜噜噜| 麻豆国产va免费精品高清在线| 精品久久久久av| 8888四色奇米在线观看| 国产美女在线精品| 欧美最猛性xxxx| 日本中文在线视频| 一道本一区二区三区| 欧美福利电影网| 久久久噜噜噜www成人网| 欧美成人精品一区二区男人看| 成人在线视频一区| 国产日本欧美一区二区三区在线| 国产精品99精品无码视| 久久人人99| 久久最新资源网| 精品无码一区二区三区爱欲| 深夜影院在线观看| 国内欧美视频一区二区| 亚洲18私人小影院| 亚洲波多野结衣| 美女精品一区最新中文字幕一区二区三区 | 色在线视频观看| 中文字幕一区二区三区四区不卡| 国产精品免费人成网站| 成人xxxxx| 国产精品久免费的黄网站| 在线观看日韩| 在线视频欧美性高潮| 麻豆精品国产传媒av| 99视频有精品高清视频| 在线观看www91| 久久免费视频3| 国产福利在线免费观看| 亚洲色图视频网站| 亚洲一区高清| yw193.com尤物在线| 欧美大片在线观看| 免费看污久久久| www.日韩在线观看| 国产一区三区三区| 国产欧美最新羞羞视频在线观看| 中文字幕免费在线观看视频| 亚洲另类视频| 久久人人97超碰精品888| 青青草手机在线视频| 99视频精品视频高清免费| 在线a欧美视频| 国产又粗又猛又爽又黄av| 亚洲妇女av| 亚洲人成在线免费观看| 一级特黄a大片免费| 红杏成人性视频免费看| 精品国产91亚洲一区二区三区婷婷| 手机在线观看日韩av| 日韩成人18| 欧美成人video| 大尺度在线观看| 牛牛精品成人免费视频| 亚洲精品白浆高清久久久久久| 久久久久亚洲av成人网人人软件| 高清精品视频| 日韩精品中文在线观看| 无码一区二区三区在线| 成人在线免费观看91| 一区二区三区久久精品| 午夜黄色福利视频| 亚洲国产不卡| 欧美精品videosex极品1| 国产真实的和子乱拍在线观看| 悠悠资源网久久精品| 69久久夜色精品国产69| 无码人妻丰满熟妇区bbbbxxxx| 日韩精品国产精品| 91嫩草在线视频| 午夜精品久久久久久久99热黄桃 | 香蕉视频1024| 久久精品66| 尤物九九久久国产精品的分类| 午夜激情视频在线播放| 亚洲婷婷免费| 国产精品成人免费电影| 亚洲一区二区三区高清视频| 国产一区二区三区四区五区美女 | 欧美特黄一级大片| 久热精品视频在线观看一区| jizz国产免费| 日本不卡视频一二三区| 91观看网站| 国产午夜在线视频| 亚洲免费视频中文字幕| 国产免费观看高清视频| 日日夜夜一区| 亚洲精品国产综合区久久久久久久 | 伊人久久中文字幕| 高清久久久久久| 日韩性感在线| av资源一区| 欧美日韩一区二区三区在线看| 欧美午夜精品一区二区| av中文字幕一区二区| 久久99亚洲精品| 波多野结衣视频在线看| 成人小视频免费观看| 亚洲国产精品www| av在线视屏| 在线综合视频播放| 欧美大波大乳巨大乳| 亚洲午夜一区| 亚洲va欧美va在线观看| 国产专区在线| 亚洲成av人片一区二区梦乃| av亚洲天堂网| 国产日产精品一区二区三区四区的观看方式 | 国产一区二区三区高清| 欧美黄色激情| 在线视频亚洲一区| 久久久久久久无码| 欧美日韩99| 91日本视频在线| 91在线高清| 在线国产电影不卡| 亚洲自拍偷拍一区二区| 亚洲国产三级| 国产精品久久九九| 中文字幕中文字幕在线中高清免费版| 日本电影亚洲天堂一区| 美国黄色a级片| 亚洲激情在线| 国产精品免费一区二区三区| 国产精品剧情一区二区在线观看| 欧美视频一区二区三区在线观看| 久久久久久国产精品无码| 亚洲电影在线| 国产精品99久久久久久久| av文字幕在线观看| 91精品啪在线观看国产60岁| 四季av中文字幕| 日韩av一级片| 日韩精品一区二区三区丰满| xxx欧美xxx| 亚洲人精品午夜在线观看| 可以免费在线观看的av| 99热99精品| 成人免费在线小视频| 奇米777国产一区国产二区| 国语对白做受69| 亚洲av毛片成人精品| 在线观看日韩精品视频| 国产一区二区三区黄网站| 国产亚洲欧美日韩美女| 婷婷激情五月综合| 国产日韩在线不卡| 999精品视频在线| 第一sis亚洲原创| 国产美女精品视频| 美女免费久久| 日韩一区二区三区在线视频| 亚洲一级生活片| 国产精品99久久久久久似苏梦涵 | 91视频-88av| 国产黄a三级三级三级av在线看 | 受虐m奴xxx在线观看| 视频在线观看一区| 亚洲色图自拍| 欧美日韩国产一区二区在线观看| 欧美精品999| 亚洲欧美日韩动漫| 在线观看视频91| 国产美女高潮视频| 国产.欧美.日韩| 国产精品宾馆在线精品酒店| 激情婷婷综合| 亚洲在线免费观看| 色是在线视频| 日日狠狠久久偷偷四色综合免费| 国产高清视频免费| 岛国av一区二区在线在线观看| 在哪里可以看毛片| 精品无人码麻豆乱码1区2区| 免费看日b视频| 精品国产一二区| 伊人色综合一区二区三区影院视频| 日韩av在线资源| 免费黄色小视频在线观看| 国产精品国产| 国产成人一区二区三区电影| 91短视频版在线观看www免费| 日韩精品一区在线观看| 国产精品乱子伦| 亚洲欧洲另类国产综合| 中文字幕人妻一区二区三区| 日本视频在线一区| 激情小视频网站| 精品一区二区三区中文字幕老牛 | 日韩有码欧美| 欧美亚洲成人网| www久久日com| 亚洲视频在线视频| 亚洲av无码乱码国产精品久久| 日本韩国欧美在线| 久久久无码一区二区三区| 国产喂奶挤奶一区二区三区| 久久久久久无码精品人妻一区二区| 免费视频久久| 男人添女人下部视频免费| av伊人久久| 久久综合九色综合久99| 精品一区二区三区免费看| 欧美一级黄色网| 欧美理论电影| 日韩视频在线免费| 成人动漫在线播放| 精品亚洲永久免费精品| 国产白浆在线观看| 欧美日免费三级在线| 久久久久久久久久影院| 亚洲国产精品麻豆| 清纯粉嫩极品夜夜嗨av| 亚洲欧美一区二区在线观看| 国产呦小j女精品视频| 懂色一区二区三区免费观看| 91福利在线免费观看| 日本人69视频| 在线视频精品| 中文字幕色呦呦| 成人一区而且| 日韩高清dvd| 国产精品三p一区二区| 亚洲free嫩bbb| 久久久加勒比| 国产精品日韩在线一区| 亚洲黄色网址| 欧美在线亚洲在线| 国产污视频在线播放| 欧美激情视频播放| 羞羞视频在线观看不卡| 久久最新资源网| 麻豆网站在线免费观看| 日韩中文字幕在线视频| 欧美日韩在线看片| 日韩一区二区在线视频| 在线看免费av| www.亚洲一区| 久久bbxx| 久久大大胆人体| 国产高清一区二区三区视频| 久久精品视频免费播放| 黄色一级大片在线免费看产| 久久视频在线直播| 欧美色图天堂| 97视频在线免费观看| 在线免费三级电影网站| 国产不卡在线观看| 久久久精品一区二区毛片免费看| 国产精品嫩草影院久久久| 日韩黄色碟片| 亚洲aⅴ男人的天堂在线观看| 日韩精品视频一区二区三区| 成人av免费看| 亚洲成aⅴ人片久久青草影院| 欧美福利一区二区三区| 狠狠综合久久av一区二区蜜桃| 日韩精品福利视频| 香蕉久久网站| 久久手机在线视频| 久久香蕉精品| 182午夜视频| 高清在线不卡av| 亚洲永久精品ww.7491进入| 国产精品网站一区| 欧美日韩精品在线观看视频| 亚洲国产精品天堂| 在线免费观看av网址| 7799精品视频| 五月天激情开心网| 中文字幕日韩av电影| 污污的网站在线看| 911国产网站尤物在线观看| 欧美韩国亚洲| 96久久精品| 国产va免费精品观看精品视频| 亚洲欧洲精品一区| 伊人精品在线| 精品999在线| 不卡高清视频专区| 成人性生交大片免费看无遮挡aⅴ| 中文字幕色av一区二区三区| 国产第一页第二页| 欧美性色aⅴ视频一区日韩精品| jlzzjlzz亚洲女人18| 亚洲欧美另类国产| 青春草免费在线视频| 国产精品福利网站| 九九热播视频在线精品6| 亚洲午夜精品福利| 亚洲免费中文| 麻豆精品国产传媒| 中文字幕不卡在线播放| 日韩视频免费观看高清| 色一情一伦一子一伦一区| 91在线公开视频| 精品小视频在线| av免费在线网站| 国产精品第七十二页| 国产精品任我爽爆在线播放| 亚洲免费视频一区| 美女日韩在线中文字幕| 国产高清999| 国产精品国产三级国产普通话99 | 亚洲精品免费观看| aaaaaaaa毛片| 国产精品国产a级| 国产精品久久久久久久久夜色| 亚洲第一网中文字幕| 91网址在线观看| 91精品国产综合久久香蕉| 中文字幕伦av一区二区邻居| 青青草精品视频在线| 国产精品66部| 久久久久久视频| 欧美精品乱码久久久久久按摩| 国产一级免费在线观看| 97av视频在线| 久久97精品| 欧美一区二区三区综合| 极品销魂美女一区二区三区| 一级二级黄色片| 91福利国产精品| 国产精品影院在线| 国产成人鲁鲁免费视频a| 台湾色综合娱乐中文网| 极品美女扒开粉嫩小泬| 成人精品国产福利| 国产污片在线观看| 亚洲国产精品嫩草影院久久| 精品精品导航| 国产伦精品一区二区三区视频孕妇| 欧美va天堂在线| 亚欧美一区二区三区| 亚洲欧美二区三区| av免费观看网址| 欧美激情视频给我| 久久精品国产亚洲5555| 男人日女人逼逼| 26uuu亚洲综合色| 国产成人综合欧美精品久久| 精品亚洲永久免费精品| 欧美日韩五码| 亚洲精品一区二区三区av| 麻豆国产精品一区二区三区 | 亚洲综合视频网| 天天干视频在线观看| 茄子视频成人在线| 欧美色婷婷久久99精品红桃| xxx国产在线观看| 国产精品国产馆在线真实露脸| 精品国产一级片| 国内精品久久久久久久久| 婷婷成人影院| 天天干天天干天天干天天干天天干| 国产精品久久三| 精品久久久无码中文字幕| 久久久久久国产免费| 九九热线有精品视频99| 色婷婷综合久久久久久| 蜜桃免费一区二区三区| 久久av一区| 国产一二三四视频| 欧美一级搡bbbb搡bbbb| av影院在线| 色噜噜狠狠一区二区三区| 国产第一页在线视频| 亚洲已满18点击进入在线看片| 欧美日本一区| 中国美女乱淫免费看视频| 欧美三级日韩在线| 欧美大胆的人体xxxx| 久久香蕉综合色| 久久99精品久久久久久久久久久久 | 国产一区二区三区免费在线| 国产精品va在线观看无码| 久久久午夜精品理论片中文字幕| 中文字幕+乱码+中文乱码www| 欧美成人在线影院| 亚洲伊人春色| 三级黄色片播放| 日韩人在线观看| 影音先锋在线视频| 日韩欧美一区二区三区久久婷婷| 国产麻豆日韩欧美久久| 国产99久久久| 久久在线观看视频| 曰本一区二区三区视频| 黄色片子免费看| 欧美优质美女网站| av中文资源在线资源免费观看| 亚洲欧美日产图| 26uuu欧美| 亚洲精品视频专区|