VB6 中在模块级中使用DefType的一些用法解释
2008-03-14 17:58
393 查看
Deftype 语句
在模块级别上,为变量和传给过程的参数,设置缺省数据类型,以及为其名称以指定的字符开头的 Function 和 Property Get 过程,设置返回值类型。
语法
DefBool letterrange[, letterrange] . . .
DefByte letterrange[, letterrange] . . .
DefInt letterrange[, letterrange] . . .
DefLng letterrange[, letterrange] . . .
DefCur letterrange[, letterrange] . . .
DefSng letterrange[, letterrange] . . .
DefDbl letterrange[, letterrange] . . .
DefDec letterrange[, letterrange] . . .
DefDate letterrange[, letterrange] . . .
DefStr letterrange[, letterrange] . . .
DefObj letterrange[, letterrange] . . .
DefVar letterrange[, letterrange] . . .
所需的 letterrange 参数遵循下述语法:
letter1[-letter2]
letter1 和 letter2 参数指定设置缺省数据类型的名称范围。每个参数都是指变量,参数和 Function 过程,或 Property Get 过程名称的首字母,且参数可以是字母表中的任意字母。letterrange 中不区分字母的大小写。
说明
语句的名字就确定相应的数据类型:
语句 数据类型
DefBool 布尔
DefByte Byte
DefInt Integer
DefLng Long
DefCur Currency
DefSng Single
DefDbl Double
DefDec Decimal(目前尚不支持)
DefDate Date
DefStr String
DefObj Object
DefVar Variant
例如,在下面的程序段中,Message 就是一个字符串变量:
DefStr A-Q
. . .
Message = "Out of stack space."
Deftype 语句只在使用该语句的模块中有效。例如,一个模块中的 DefInt 语句只对在该模块中声明的变量和传给过程的参数的缺省数据类型,以及 Function 和 Property Get 过程的返回值的类型有效;而其它模块中的变量、参数、以及返回值的缺省数据类型就不受影响。如果不用 Deftype 语句显式地声明,则所有变量、参数、Function 过程、以及 Property Get 过程的缺省数据类型都是 Variant。
当指定字符范围时,通常为以字符集的前 128 个字符中的字符开始的变量定义数据类型。不过,如果指定的字符范围是A–Z,则将所有的变量,包括以字符集的扩展部分(128–255) 中的国际字符开始的变量的缺省类型都设为指定的类型。
在指定了A–Z 范围之后,就不能再使用 Deftype 语句来重新定义任何子范围的变量了。在指定一个范围后,如果另一个 Deftype 语句定义的范围中含有前面已定义的字符,就会产生错误。不过,不管变量是否已定义,都可以使用带 As type 子句的 Dim 语句来显式指定其数据类型。例如,可以在模块级使用如下代码将一个缺省数据类型为 Integer 的变量定义为 Double:
DefInt A-Z
Dim TaxRate As Double
Deftype 语句对用户定义类型中的元素无影响,因为这些元素必须显式声明。
Deftype 语句示例
该示例演示了 Deftype 语句的多种用法,来设置那些名称是以指定字符开头的变量和函数过程的缺省数据类型。只有使用 Dim 语句的显式赋值,才可以覆盖这种缺省数据类型。Deftype 语句只能在模块级使用(即不能在过程内使用)。
'将名称以 A 至 K 开头变量的缺省数据类型设为 Integer 类型。
DefInt A-K
'将名称以 L 至 Z 开头变量的缺省数据类型设为 String 类型。
DefStr L-Z
CalcVar = 4 '初始化为 Integer。
StringVar = "Hello there" '初始化为 String。
AnyVar = "Hello" '导致 "Type mismatch" 错误。
Dim Calc As Double '赋给一个 Double 类型。
Calc = 2.3455 '允许指定为一个 Double 数。
'Deftype 语句也可以应用于函数过程。
CalcNum = ATestFunction(4) '调用用户自定义的函数。
'ATestFunction 函数过程的定义。
Function ATestFunction(INumber)
ATestFunction = INumber * 2 '返回值是一个 Integer。
End Function
在模块级别上,为变量和传给过程的参数,设置缺省数据类型,以及为其名称以指定的字符开头的 Function 和 Property Get 过程,设置返回值类型。
语法
DefBool letterrange[, letterrange] . . .
DefByte letterrange[, letterrange] . . .
DefInt letterrange[, letterrange] . . .
DefLng letterrange[, letterrange] . . .
DefCur letterrange[, letterrange] . . .
DefSng letterrange[, letterrange] . . .
DefDbl letterrange[, letterrange] . . .
DefDec letterrange[, letterrange] . . .
DefDate letterrange[, letterrange] . . .
DefStr letterrange[, letterrange] . . .
DefObj letterrange[, letterrange] . . .
DefVar letterrange[, letterrange] . . .
所需的 letterrange 参数遵循下述语法:
letter1[-letter2]
letter1 和 letter2 参数指定设置缺省数据类型的名称范围。每个参数都是指变量,参数和 Function 过程,或 Property Get 过程名称的首字母,且参数可以是字母表中的任意字母。letterrange 中不区分字母的大小写。
说明
语句的名字就确定相应的数据类型:
语句 数据类型
DefBool 布尔
DefByte Byte
DefInt Integer
DefLng Long
DefCur Currency
DefSng Single
DefDbl Double
DefDec Decimal(目前尚不支持)
DefDate Date
DefStr String
DefObj Object
DefVar Variant
例如,在下面的程序段中,Message 就是一个字符串变量:
DefStr A-Q
. . .
Message = "Out of stack space."
Deftype 语句只在使用该语句的模块中有效。例如,一个模块中的 DefInt 语句只对在该模块中声明的变量和传给过程的参数的缺省数据类型,以及 Function 和 Property Get 过程的返回值的类型有效;而其它模块中的变量、参数、以及返回值的缺省数据类型就不受影响。如果不用 Deftype 语句显式地声明,则所有变量、参数、Function 过程、以及 Property Get 过程的缺省数据类型都是 Variant。
当指定字符范围时,通常为以字符集的前 128 个字符中的字符开始的变量定义数据类型。不过,如果指定的字符范围是A–Z,则将所有的变量,包括以字符集的扩展部分(128–255) 中的国际字符开始的变量的缺省类型都设为指定的类型。
在指定了A–Z 范围之后,就不能再使用 Deftype 语句来重新定义任何子范围的变量了。在指定一个范围后,如果另一个 Deftype 语句定义的范围中含有前面已定义的字符,就会产生错误。不过,不管变量是否已定义,都可以使用带 As type 子句的 Dim 语句来显式指定其数据类型。例如,可以在模块级使用如下代码将一个缺省数据类型为 Integer 的变量定义为 Double:
DefInt A-Z
Dim TaxRate As Double
Deftype 语句对用户定义类型中的元素无影响,因为这些元素必须显式声明。
Deftype 语句示例
该示例演示了 Deftype 语句的多种用法,来设置那些名称是以指定字符开头的变量和函数过程的缺省数据类型。只有使用 Dim 语句的显式赋值,才可以覆盖这种缺省数据类型。Deftype 语句只能在模块级使用(即不能在过程内使用)。
'将名称以 A 至 K 开头变量的缺省数据类型设为 Integer 类型。
DefInt A-K
'将名称以 L 至 Z 开头变量的缺省数据类型设为 String 类型。
DefStr L-Z
CalcVar = 4 '初始化为 Integer。
StringVar = "Hello there" '初始化为 String。
AnyVar = "Hello" '导致 "Type mismatch" 错误。
Dim Calc As Double '赋给一个 Double 类型。
Calc = 2.3455 '允许指定为一个 Double 数。
'Deftype 语句也可以应用于函数过程。
CalcNum = ATestFunction(4) '调用用户自定义的函数。
'ATestFunction 函数过程的定义。
Function ATestFunction(INumber)
ATestFunction = INumber * 2 '返回值是一个 Integer。
End Function
相关文章推荐
- 在NSString NSNumber NSValue 中一些基本方法的使用和解释
- requireJs使用初探及模块定义define函数的用法
- Python使用random和tertools模块解一些经典概率问题
- handlebar的一些用法——个人使用总结
- Boost.Interprocess使用手册翻译之三:一些基本解释 (Some basic explanations)
- Android图片加载框架Glide用法及一些使用心得
- PyRTF模块生成rtf的一些常见用法
- Python编程中time模块的一些关键用法解析
- Python实现一些简单的算法(2)—计算余数与random模块的使用
- 在不使用*、/、+、-、%操作符的情况下,如何求一个数的1/3?(更新了一些解释,用C语言实)
- [置顶] Numpy:关于Numpy中一些使用方法的详细解释——Jason niu
- ibatis的一些错误码解释以及解决方法、一些使用心得
- android中handler的一些总结以及使用(一)之handler的基本用法
- PLL模块使用中的一些错误
- Hibernate 中一些方法的使用___getHibernateTemplate()的用法
- 关于Spread打印的一些属性用法__页眉页脚的使用
- Python中使用platform模块获取系统信息的用法教程
- Python之队列queue模块使用 常见问题与用法
- CSS 一些使用用法
- 关于Apache Shiro权限框架的一些使用误区的解释