[爆卦]vb integer範圍是什麼?優點缺點精華區懶人包

為什麼這篇vb integer範圍鄉民發文收入到精華區:因為在vb integer範圍這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者macgyfu (YFU)看板Visual_Basic標題Re: [VB6 ] VB呼叫C DL...


※ 引述《fumizuki (矇面加菲獅)》之銘言:
: ※ 引述《macgyfu (YFU)》之銘言:
: : Hi
: : 小弟最近嘗試要用VB呼叫dll來用,基本上那些dll我都用VC++使用過
: : ,但是用VB呼叫了幾個發現了一些問題,C的function常常包含了unsigned short
: : ,unsigned char和xxx(unsigned short array[10])這種要傳array的型態,遇到
: : 這種問題不知道要怎麼處理?
: 用相近的型態來替代吧
: unsingned short → long
: unsingned char → string
說到這個我覺得奇怪,在C code裡面如果是xx(int x)的話,在VB我要用ByVal x as Long
才有辦法跑,不然就直接或沒有反應,然後unsigned short我也用long想跑過,但是執行
到這一步程式就會當掉,有上網google了幾個,似乎有幾篇文章有提到類似的問題,但還
再研究中,因為我是要丟變數給dll,不知道格式要不要在修改過?
謝謝你的回答
我在研究看看

: 陣列用傳址的方式...
: VB6有提供這三個函數可以取得變數位址
: strPtr(), varPtr(), objPtr()
: 函數的位址 AddressOf xxxx()
: WindowsAPI 的 CopyMemory() 可以進行記憶體操作o.o
: (不過這是危險的動作,操作不當是會直接關掉程式的...)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.217.155.31
cole945:因為你用VC++編,他的int是4byte,但在VB6,Integer是2Byte 01/16 00:01
cole945:轉換時一定要注意參數type的大小~ 01/16 00:02
cole945:對了,你從C DLL那邊的unsigned short應該是2-byte,所以你 01/16 00:11
cole945:在VB6也應該用對應的 2-byte 的Integer 來接收~, 但因為 01/16 00:11
cole945:Integer是有號,所以超過0x7FFFF的數會因為2的補數表示法 01/16 00:12
cole945:的關係變成負數,若是變成負數表示超過範圍,加回&h10000即 01/16 00:13
cole945:可。但Integer範圍有限,所以你要改用Long array來放.. 01/16 00:14
macgyfu:我在MSDN看到.NET有UShort的資料型態,這是VB.Net嗎? 01/16 01:53
macgyfu:VBA裡面有辦法使用嗎? 01/16 01:55
macgyfu:或VB6.0 01/16 01:55
fumizuki:.NET 和 VB6 的資料型態 大小 是不一樣的... 01/16 06:15
fumizuki:unsigned short 的最大值是65536 VB6的long 是65535 01/16 06:16
cole945:.NET的ushort是到65535(0xFFFF)才對(總之是-byte), VB6的 01/16 22:29
cole945:Long是有號4Byte,所以值域在正負2G~ MSDN上應該已經查不到 01/16 22:30
cole945:VB6那時的相關資料吧@.@? 用google搜 VB6和type應該比較快 01/16 22:31
cole945:不然去灌 visual studio 6 那時的離線版的MSDN文件吧@.@ 01/16 22:32
macgyfu:有點feeling了,灌了VB2005亂Try,之前VB6要用long在2005괠 01/16 22:35
macgyfu:要用integer,然後在C裡面用unsigned short在vb2005要用 01/16 22:36
macgyfu:short,還蠻妙的。 01/16 22:36
fumizuki:喔最大值我記錯了 vb6 integer 32767 long 2147483647 01/17 06:38

你可能也想看看

搜尋相關網站