数据类型的操作方法

如题所述

第1个回答  2016-05-10

如果字符串表示数值,则可将字符串赋予数值变量。也可将数值赋予字符串变量。例如,将命令按钮、文本框和列表框放置在窗体中。在命令按钮的 Click 事件中输入下列代码。运行应用程序并单击命令按钮。 PrivateSubCommand1_Click()DimintXAsIntegerDimstrYAsStringstrY=100.23intX=strY'将字符串传递给数值变量。List1.AddItemCos(strY)'将字符串中数值的余弦值。'添加到列表框中。strY=Cos(strY)'将余弦值传递给字符串变量。Text1.Text=strY'在文本框中显示字符串。EndSubVisual Basic 会自动强制变量为适当的数据类型。在转换字符串和数值时要小心;如果传送字符串中的值不是数值,则在运行时会出错。
逻辑型
若变量的值只是“true/false”、“yes/no”、“on/off”信息,则可将它声明为 Boolean 类型。Boolean 的缺省值为 False。在下面的例子中,blnRunning 是 Boolean 变量,存储简单的 yes/no 设置。 DimblnRunningAsBoolean'查看磁带是否在转。IfRecorder.Direction=1ThenblnRunning=TrueEndif日期型
Date 和 Time 值既可包含在特定的 Date 数据类型中,又可包含在 Variant 变量中。一般的 Date 特性适用于这两种类型。
详细信息 请参阅《联机手册》的“高级变量主题”中的“在 Variant 变量中存储 Date/Time 值”部分。
当其它数值数据类型转换为 Date 时,小数点左边的值表示 Date 信息,小数点右边的值则代表 Time。午夜为 0,正午为 0.5。负数表示公元 1899 年 12 月 31 日之前的 Date。
对象型
Object 变量作为 32 位(4 个字节)地址来存储,该地址可引用应用程序中或某些其它应用程序中的对象。可以随后(用 Set 语句)指定一个被声明为 Object 的变量去引用应用程序所识别的任何实际对象。 DimobjDbAsObjectSetobjDb=OpenDatabase(c:\Vb5\Biblio.mdb)在声明对象变量时,请试用特定的类,而不用一般的 Object(例如用 TextBox 而不用 Control,或者象上面的例子那样,用 Database 取代 Object)。运行应用程序之前,Visual Basic 可以决定引用特定类型对象的属性和方法。因此,应用程序在运行时速度会更快。在“对象浏览器”中列举了特定的类。
当使用其它应用程序的对象,并在“对象浏览器”中的“类”列表中列举对象时,不要用 Variant 或一般的 Object,而应声明对象。这样可确保 Visual Basic 能够识别引用的特定类型对象,在运行时解决引用问题。
详细信息 关于创建和指定对象以及对象变量的更详细信息,请参阅本章后面的“创建对象”部分。
Visual Basic 提供了几种转换函数,可用来将值转换成特定数据类型。例如,用 CCur函数将值转换成 Currency 类型:
PayPerWeek = CCur (hours * hourlyPay) 转换函数 将表达式转换成 Cbool Boolean Cbyte Byte Ccur Currency Cdate Date CDbl Double Cint Integer CLng Long CSng Single CStr String Cvar Variant CVErr Error 对目标数据类型,传递到转换函数的值必须是有效的,否则会发生错误。例如,如果想把 Long 型数转换成 Integer 型数,那么,Long 型数必须在 Integer 数据类型的有效范围之内。
相关信息请查阅本词条后面的 数据类型概述
变体型
概述
Variant 变量能够存储所有系统定义类型的数据。如果把它们赋予 Variant 变量,则不必在这些数据的类型间进行转换; Visual Basic 会自动完成任何必要的转换。例如: DimSomeValue'缺省为Variant。SomeValue=17'SomeValue包含17(双字符的串)。SomeValue=SomeValue-15'SomeValue包含数值2。SomeValue=U&SomeValue'SomeValue包含U2(双字符的串)。不必过多关注 Variant 变量中数据的类型就可对 Variant 变量进行操作,但须避免落入陷阱。
如果对 Variant 变量进行数学运算或函数运算,则 Variant 必包含某个数。更详细的信息,请参阅《联机手册》中“高级变量主题”中的“变量中存储的 Numeric 值”部分。
如果正在连接两个字符串,则用 & 操作符而不用 + 操作符。更详细的信息,请参阅《联机手册》中“高级变量主题”中的“Variant 变量中存储的 Strings”部分。
除了可以像其它标准数据类型一样操作外,Variants 还包含三种特定值:Empty,Null 和 Error。 Empty 值
有时需要知道是否已将一个值赋予所创建的变量。在赋值之前,Variant 变量具有值 Empty。值 Empty 是异于0、零长度字符串 () 或 Null 值的特定值。可用 IsEmpty 函数测试 Empty 值: IfIsEmpty(Z)ThenZ=0当 Variant 变量包含 Empty 值时,可在表达式中使用它;将其作为 0 或零长度字符串来处理,这要根据表达式来定。
只要将任何值(包括 0、零长度字符串或 Null)赋予 Variant 变量,Empty 值就会消失。而将关键字 Empty 赋予 Variant 变量,就可将 Variant 变量恢复为 Empty。
Null 值
Variant 数据类型还可包含一特定值:Null。Null通常用于数据库应用程序,表示未知数据或丢失的数据。 由于在数据库中使用 Null 方法,Null 具有某些唯一的特性:
对包含 Null 的表达式,计算结果总是 Null。于是说 Null 通过表达式“传播”;如果表达式的部分之值为 Null,那么整个表达式的值也为 Null。
将 Null 值、含 Null 的 Variant 变量或计算结果为 Null 的表达式作为参数传递给大多数函数,将会使函数返回 Null。
Null 值经由返回 Variant 数据类型的内在函数传播。
也可用 Null 关键字指定 Null 值。 Z=Null也可用 IsNull 函数测试 Variant 变量是否包含 Null 值。 IfIsNull(X)AndIsNull(Y)ThenZ=NullElseZ=0EndIf如果将 Null 值赋予 Variant 以外的任何其它类型变量,则将出现可以捕获的错误。而将 Null 值赋予 Variant 则不会发生错误,Null 将通过包含 Variant 变量的表达式传播(尽管 Null 并不通过某些函数来传播)。可以从任何具有 Variant 返回值的函数过程返回 Null。
除非明确将 Null 赋予变量,否则变量不会设置成 Null 值,所以,如果不在应用程序中使用 Null,就不必书写测试 Null 和处理 Null 的程序。
详细信息 关于如何在表达式中使用 Null 的详细信息,请参阅语言参考的“Null”部分。
Error 值
在 Variant 中,Error 是特定值,指出已发生的过程中的错误状态。但是,与其它类型错误不同,这里并未发生正常的应用程序级的错误处理。因此,程序员或应用程序本身可根据 Error 值进行取舍。利用 CVErr 函数将实数转换成错误值就可建立 Error 值。
详细信息 关于如何在表达式中使用 Error 值,请参阅语言参考中的“CVErr 函数”部分。关于错误处理的信息,请参阅“调试代码和处理错误”。有关 Variant 数据类型的更详细信息,请参阅《联机手册》中的“高级变量主题”。
存储空间大小与范围
以下表格显示所支持的数据类型,以及存储空间大小与范围。 数据类型  储存空间大小(单位:字节)范围Byte(字节型)10 - 255Boolean(布尔型/逻辑型)2True 或 FalseInteger(整数型)2-32,768 ~ 32767Long(长整形) 4-2,147,483,648 ~ 2,147,483,647Single
(单精度浮点型) 4负数范围:
-3.402823E38 ~ -1.401298E-45
正数范围:
1.401298E-45 ~ 3.402823E38 Double
(双精度浮点型) 8负数范围:
-1.797,693,134,862,32E308 ~
-4.940,656,458,412,47E-324
正数范围:
4.940,656,458,412,47E-324 ~
1.797,693,134,862,32E308 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
有小数点时:
+/-7.922,816,251,426,433,759,354,395,033,5
最小的非零值:
+/-0.000,000,000,000,000,000,000,000,000,1 Date(时间日期型)8100年1月1日~9999年12月31日Object(对象型)4任何 Object 引用String (变长)10长度从 0 到 大约 20 亿String (定长)10长度从 1 到大约 65,400Variant (数字)16任何数字值,最大可达 Double 的范围Variant (字符)22与字符串长度,变长 String 有相同的范围用户自定义变量--任何数据类型的数组都需要 20 个字节的内存空间,加上每一数组维数占 4 个字节,再加上数据本身所占用的空间。数据所占用的内存空间可以用数据元数目乘上每个元素的大小加以计算。例如,以 4 个 2 字节之 Integer 数据元所组成的一维数组中的数据,占 8 个字节。这 8 个字节加上额外的 24 个字节,使得这个数组所需总内存空间为 32 个字节。
包含一数组的 Variant 比单独的一个数组需要多 12 个字节。
定类,定序;定比;定距