日期:2008-08-28  浏览次数:20570 次

今天在做一个关于IC卡读写的程序,用到了一个IC卡读写器,有一个配套的dll动态库和一些库函数的说明,但是调试的时候总是会遇到一些奇怪的现象。VB6的示例中可以的操作,在我的程序中就会出现“未将对象引用设置到对象的实例”等等错误。折腾了半天也没有什么进展。后来用.NET的升级向导将那个VB6的实力程序升级,发现模块中函数的声明有一些变化。

VB6中声明:

Declare Function srd_45d041 Lib "mwic_32.dll" (ByVal icdev As Long, ByVal page As Integer, ByVal offset As Integer, ByVal le As Long, ByVal data_buffer$) As Integer

升级后.NET的声明:

Declare Function srd_45d041 Lib "mwic_32.dll" (ByVal icdev As Integer, ByVal page As Short, ByVal offset As Short, ByVal le As Integer, ByVal data_buffer As String) As Short
  VB6中Long类型在.NET中变成了Integer,而Integer变成了Short。就这么一点小小的问题搞得我郁闷了半天。把程序调试通过以后,我查了一下MSDN Library,发现.NET的数据类型和VB6的存在一些变化。具体的可以看下面这两张表。

表1 VB6中的数据类型

数据类型

存储空间大小

范围

Byte

1 个字节

0 到 255

Boolean

2 个字节

True 或 False

Integer

2 个字节

-32,768 到 32,767

Long
(长整型)

4 个字节

-2,147,483,648 到 2,147,483,647

Single
(单精度浮点型)

4 个字节

负数时从 -3.402823E38 到 -1.401298E-45;正数时从 1.401298E-45 到 3.402823E38

Double
(双精度浮点型)

8 个字节

负数时从 -1.79769313486232E308 到
-4.94065645841247E-324;正数时从4.94065645841247E-324 到 1.79769313486232E308

Currency
(变比整型)

8 个字节

从 -922,337,203,685,477.5808 到 922,337,203,685,477.5807

Decimal

14 个字节

没有小数点时为 +/-79,228,162,514,264,337,593,543,950,335,而小数点右边有 28 位数时为 +/-7.9228162514264337593543950335;最小的非零值为 +/-0.0000000000000000000000000001

Date

8 个字节

100 年 1 月 1 日 到