推 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