OleVariant(OleVariant)
OleVariant类型在Windows和Linux平台都存在。Variant和OleVariant的主要区别是,Variant能包含只有当前程序才能理解的数据类型,OleVariant只包含为Ole自动化兼容而定义的数据类型,它说明,这些数据类型能在程序间或通过网络传送,而不必担心另一端是否知道如何处理它们。
当把一个包含自定义数据(比如Pascal字符串,或新定义的Variant类型中的一种)的Variant赋给OleVariant时,运行库尝试把Variant转换为OleVariant标准数据类型中的一种(比如Pascal字符串转换为OleBSTR字符串)。比如,若一个包含AnsiString的Variant被赋给OleVariant,AnsiString变为WideString。当把Variant作为OleVariant参数传递时,前面的转换也是成立的。
Type compatibility and identity(类型兼容性和一致性)
Type compatibility and identity: Overview(概述)
要理解何种表达式能进行何种操作,我么需要区分几种类型和值的兼容性,它们包括类型一致性、类型兼容性和赋值兼容性。
Type identity(类型一致性)
Type identity is almost straightforward. When one type identifier is declared using another type identifier, without qualification, they denote the same type. Thus, given the declarations
类型一致性非常直接。当一种类型(标志符)使用另一种类型声明时(没有限制),它们表示相同的类型。这样,下面的声明
- 69 -
Data types, variables and constants
type
T1 = Integer; T2 = T1;
T3 = Integer; T4 = T2;
T1、T2、T3、T4和Integer都是指的同一种类型。要声明一种不同的类型,在声明中重复type关键字。比如
type TMyInteger = type Integer;
创建了一种新类型TmyInteger,它和Integer不同。
起类型声明作用的语句构造,它们每次出现都声明一种不同的类型,所以下面的声明 type
TS1 = set of Char; TS2 = set of Char;
创建了两种不同的类型:TS1和TS2。类似的,变量声明var
S1: string[10]; S2: string[10];
创建两个不同的变量。要创建相同类型的变量,使用var S1, S2: string[10]; 或
type MyString = string[10]; var
S1: MyString; S2: MyString;
Type compatibility(类型兼容性)每个类型和自己兼容。如果至少满足下面的一个条件,两个不同的类型也是兼容的:z 它们都是实数类型 z 它们都是整数类型
z 一种类型是另一种的子界类型 z 两个都是同一种类型的子界类型
z 两个都是集合类型,并且它们的基础类型是兼容的z 两个都是packed-string类型,并且有相同数目的元素z 一个是字符串类型,另一个是字符串、z 一个是Variant类型,另一个是整数、实数、字符串、字符或布尔类型z 两个都是类、类引用或接口类型,并且一个来自于(继承)另一个。z 一个是PChar或PWideChar,另一个是z 一个是Pointer(无类型指针)类型,另一个是任何指针类型z 两个是同一种类型的指针,并且开启了编译器指示字z 两个都是过程类型,它们有相同的返回类型,并且参数的个数、位置和类型都相同。Assignment-compatibility(赋值兼容性)赋值兼容性不是一种对称关系。T1是一个变量,- 70 -
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-49.html
╯□╰)o
@LINX11mv的意思表达了她们的心情与决心欢迎归来