Skip to content

Information模块

Information模块将运行时查询值状态的独立过程组合在一起——子类型、是否已初始化、是否提供了可选参数——以及相关的用于查询数组边界、构建Variant数组、获取原始地址、分解颜色值和获取当前运行时错误状态的工具。

检查值

Is...系列函数测试表达式是否具有特定状态或子类型,返回BooleanIsArrayIsArrayInitializedIsDateIsEmptyIsErrorIsMissingIsNullIsNumericIsObject。要获取更丰富的查询,VarType返回标识Variant子类型的VbVarType枚举值,TypeName返回其名称作为String

vb
Dim v As Variant
v = "1/1/2000"
Debug.Print IsDate(v)        ' True
Debug.Print VarType(v)       ' 8  (vbString)
Debug.Print TypeName(v)      ' "String"

数组边界

LBoundUBound返回数组指定维度的最小和最大有效下标。使用单个参数时报告第一维;传入显式的Dimension索引可查询多维数组。

vb
Dim Grid(1 To 4, 0 To 9) As Long
Debug.Print LBound(Grid)        ' 1   — first dimension lower bound
Debug.Print UBound(Grid)        ' 4   — first dimension upper bound
Debug.Print LBound(Grid, 2)     ' 0   — second dimension lower bound
Debug.Print UBound(Grid, 2)     ' 9   — second dimension upper bound

构建Variant数组

Array从逗号分隔的值列表创建Variant数组;下界遵循源文件的Option Base设置。作为特殊形式,同一名称还兼作解构Property Let,用于将右侧数组解包到左侧的各个变量中。

vb
Dim a As Variant = Array("one", "two", "three")
Dim x As Variant, y As Variant, z As Variant
Array(x, y, z) = a              ' destructuring assignment

原始指针

三个函数返回用于API调用或非安全互操作的原始地址:ObjPtr用于对象的COM标识,StrPtr用于String的底层缓冲区,VarPtr用于任何变量。结果是一个LongPtr,仅在底层对象、字符串或变量保持活动期间有效——获取指针不会持有自身的引用。要在已知地址读写内存,请将这些与(Default)模块中的GetMem/PutMem系列函数配合使用。

vb
Dim n As Long = &H12345678
Dim Bytes(0 To 3) As Byte
vbaCopyBytes 4, VarPtr(Bytes(0)), VarPtr(n)
Debug.Print Hex(Bytes(0))        ' "78" — little-endian

处理颜色值

RGBRGBA从单独的红、绿、蓝和(可选的)Alpha分量构建32位颜色值;RGB_RRGB_GRGB_BRGBA_A将这些分量提取出来。QBColor返回十六个QuickBASIC颜色索引之一的RGB值,TranslateColor将OLE颜色值(可能引用系统调色板中的条目)转换为普通RGB颜色。

vb
Dim C As Long
C = RGB(255, 100, 150)
Debug.Print RGB_R(C)         ' 255
Debug.Print RGB_G(C)         ' 100
Debug.Print RGB_B(C)         ' 150

运行时错误状态

Err返回描述当前运行时错误状态的ErrObject——其编号、描述、来源等。Erl返回引发最近错误的语句的行号(当作为数字标签提供时)。

成员

  • Array -- 从逗号分隔的值列表创建Variant数组,或在赋值左侧使用时进行解构
  • Erl -- 返回最近运行时错误发生的行号
  • Err -- 返回描述当前运行时错误状态的ErrObject
  • IMEStatus -- 返回输入法编辑器的状态
  • IsArray -- 返回变量是否为数组
  • IsArrayInitialized -- 返回数组是否已分配维度
  • IsDate -- 返回表达式是否可求值为日期
  • IsEmpty -- 返回Variant是否未初始化
  • IsError -- 返回表达式是否为错误子类型
  • IsMissing -- 返回是否提供了可选参数
  • IsNull -- 返回变量是否包含Null
  • IsNumeric -- 返回表达式是否可求值为数字
  • IsObject -- 返回变量是否引用对象
  • LBound -- 返回数组某一维度的最小有效下标
  • ObjPtr -- 返回对象的COM标识地址
  • QBColor -- 返回QuickBASIC颜色索引对应的RGB颜色值
  • RGB -- 从红、绿、蓝分量构建RGB颜色值
  • RGBA -- 从红、绿、蓝和Alpha分量构建RGBA颜色值
  • RGBA_A -- 返回RGBA颜色值的Alpha分量
  • RGB_B -- 返回RGB颜色值的蓝色分量
  • RGB_G -- 返回RGB颜色值的绿色分量
  • RGB_R -- 返回RGB颜色值的红色分量
  • StrPtr -- 返回String底层缓冲区的地址
  • TranslateColor -- 将OLE颜色值转换为普通RGB颜色值
  • TypeName -- 返回变量数据类型的名称作为String
  • UBound -- 返回数组某一维度的最大有效下标
  • VarPtr -- 返回变量的地址
  • VarType -- 返回标识变量子类型的VbVarType枚举值

twinBASIC及其LOGO版权为作者"韦恩"所有