文件名称:变体类型-京东应用架构设计
文件大小:7.56MB
文件格式:PDF
更新时间:2024-06-30 04:57:12
Delphi 2010 语法
3.5 变体类型 1. 变体类型 在介绍变体类型前,我们先来看一下系统如何识别不同数据类型的数据。以最简单的 整数为例,系统在存储整数时会根据不同的数据类型的名称而采用不同的内部结构存储来 整数值。不同的数据类型有不同的内部结构,当我们以整数数据类型如 integer声明一个 变量时,系统在存储此变量值时就会以整数的内部结构来存储这个变量值。这个过程类似 于我们登录电脑,当我们输入某个用户名及密码时,系统会启用此帐户的各项设置。在给 变量赋值时若系统发现值不能被在存入此变量(如大小不符、结构不符等)时将会引发错 误,例如若我们将一个带小数点的值赋予整数变量时会无法通过。(有些语言在此种情况会 自动将值转换为对应的类型,但 Delphi不支持这种转换) 变体类型是一种非常特殊的类型,说其特殊是因为它可以容纳多种不同类型的值。可 以说变体类型有点类似于能够根据所用钥匙的不同可以自动变换魔法锁,其可根据变量值 的类型而自动转换其内部存储结构以容纳所赋之值。将整数赋给它时,它的内部结构转换 为整型结构,而将实数赋给它时,其内部则转换实型结构。当然,与其它转换一样,变体 类型的这种变换也并非万能,其内部不能容纳以下类型的值: 记录、静态数组、集合、文件、类、类引用、指针 [ 注:]变体中的字符串另有规定,我们将在本节的末尾讨论。 计算机中,一个变体变量占据 16个字节,这 16个字节分为两个部分:变量值及变量 值的类型码。 变量值可以是一个普通的变量值,也可以是一个指向变量值的指针。类型码用于标识 当前的变量值的数据类型。Delphi提供两种方式以获取变体变量中数据的实际类型: 使用 TVarData结构,此结构相当于 Record 版本的变体类型: var v:variant; begin v := 'Delphi'; if TVarData(v).VType = varUString then writeln('v中的实际类型为 UnicodeString'); end. 将标准函数 VarType 返回值与预定义常量 varTypeMask 进行 and 逻辑运算可返回变体 变量值的确切类型,VarType在接受变体类型的参数 V并返回 TVarData(V).VType: var v:variant; begin v := 2010; if VarType(V) = varDouble then writeln('v中的实际类型为 Double类型'); end.