riant 类型变量自动初始化为 Unassigned.
全局变量的使用
使用全局变量不是好习惯, 但也有可能必须使用全局变量. 如果是这样, 建议你尽量保持 全部变量在它可用的范围内与上下文相关. 例如, 一个全局变量可能只在某个单元的 implementation 部分可用. 打算供几个单元公用的全局数据应该移到一个公用单元中 打算供几个单元公用的全局数据应该移到一个公用单元中. 用的全局数据应该移到一个公用单元中 全局数据可以在 var 部分用一个值立即初始化. 注
意, 所有的全局数据初始状态下都自 动归零, 因此不要将全局变量初始化为"空"值, 比如 0, nil, '', Unassigned 等等. 全局数据 自动归零的原因之一是因为初始状态为 0 的全局数据在 exe 文件中不占据空间. 初始状 态为 0 的数据将存储在一个"虚"数据段中, 这个数据库只在应用程序启动时从内存中分配. 初始状态非 0 的全局数据则必须在磁盘上的 exe 文件中占据空间.
类型
大小写约定 类型名称如果是保留字, 则必须完全小写. Win32 API 类型一般完全大写, 你应该遵循 Windows.pas 和其他 API 单元中某些类型名称的约定. 其他变量名称, 首字母应该大 写, 其余部分也应该足够清楚. 下面是几个例子: var MyString: string; // 保留字 WindowHandle: HWND; // Win32 API 类型 I: Integer; // 在 System 单元中引入的类型标识符
浮点(Floating Point)类型 浮点 类型
使用 Real 类型是不好的, 因为它仅仅是为了与旧的 Pascal 代码保持向后兼容而保留的. 对于一般的浮点运算应该使用 Double 类型. Double 是 IEEE 定义的标准数据格式, 处 理器指令以及
系统总线都为处理 Double 类型而进行过优化. Extended 类型应该只在需 要比 Double 更大的数据范围时使用. Extended 是 Intel 指定类型,
Java 不支持. Single 类型应该只在浮点变量本身占用的字节大小很重要的情况下使用, 比如使用其他语言编 写的 DLL 时.
枚举(Enumerated)类型 类型 枚举
枚举类型名称应该具有与其用途相关的含义. 类型名称必须以字符 T 为前缀, 表示是一 个类型声明. 枚举类型的标识符序列必须以 2 到 3 个小写字符为前缀, 而且前缀必须与类 型名有联系, 例如: TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMet al, stRB); 枚举类型的变量实例的名称应该与不带 T 前缀的类型名称相同, 除非有其他原因需要更
详细的名称, 比如 FavoriteSongType1, FavoriteSongType2, 等等.
Variant 和 OleVariant
一般来说使用 Variant and OleVariant 类型是不好的, 但如果数据类型只能在运行时确定, 就必须使用这些类型了, 比如开发 COM 和数据库程序时. OleVariant 常用于开发基于 COM 的程序, 比如 OLE 自动化和 ActiveX 控件. Variant 则
常用于非 COM 程序. 原 因是 Variant 能(与字符串变量一样)更高效地存储 Delphi 字符串, 但 OleVariant 需要把 所有的字符串转换为 Ole Strings(WideChar Strings), 而且由于没有引用记数, 字符串将永 远存在.
结构类型
数组类型
数组类型名称应该具有与其用途相关的含义. 类型名必须以字符 T 为前缀. 如果声明 了指向该数组类型的指针类型, 则其名称必须以字符 P 为前缀, 而且必须在数组类型 的前一行位置进行声明, 例如: type PCycleArray = ^TCycleArray; TCycleArray = array[1..100] of integer; 数组类型变量
实例名称应该与不带字符 T 前缀的类型名称相同.
记录类型
记录类型名称应该具有与其用途相关的含义. 类型名必须以字符 T 为前缀. 如果声明 了指向该记录类型的指针类型, 则其名称必须以字符 P 为前缀, 而且必须在记录类型 的前一行位置进行声明. 记录元素的声明应该对齐为一列, 例如: typ