D e l p h i有三种类型的字符: • AnsiChar 这是标准的1字节的A N S I字符,程序员都对它比较熟悉。 • WideChar 这是2字节的U n i c o d e字符。 • Char 在目前相当于A n s i C h a r, 但在D e l p h i以后版本中相当于Wi d e C h a r. 记住因为一个字符在长度上并不表示一个字节,所以不能在应用程序中对字符长度进行硬编码, 而应该使用S i z e o f ( )函数。 注意Sizeof()标准函数返回类型或实例的字节长度。 ===============字符串 字符串是代表一组字符的变量类型,每一种语言都有自己的字符串类型的存储和使用方法。 P a s c a l类型有下列几种不同的字符串类型来满足程序的要求: • AnsiString 这是P a s c a l缺省的字符串类型,它由AnsiChar 字符组成,其长度没有限制,同时与 n u l l结束的字符串相兼容。 • ShortString 保留该类型是为了向后兼容Delphi 1.0,它的长度限制在2 5 5个字符内。 • WideString 功能上类似于A n s i S t r i n g,但它是由Wi d e C h a r字符组成的。 • PChar 指向n u l l结束的C h a r字符串的指针,类似于C的char * 或l p s t r类型。 • PAnsiChar 指向n u l l结束的A n s i C h a r字符串的指针。 • PWideChar 指向n u l l结束的Wi d e C h a r字符串的指针。 缺省情况下,如果用如下的代码来定义字符串,编译器认为是AnsiString 字符串: v a r S:string; //编译器认为S的类型是A n s i S t r i n g 当然,能用编译开关$ H来将s t r i n g类型定义为S h o r t S t r i n g,当$ H编译开关的值为负时, s t r i n g变量 是S h o r t S t r i n g类型;当$ H编译开关的值为正时(缺省情况),字符串变量是A n s i S t r i n g类型。下面的代码 演示了这种情况: v a r { $ H - } S1:string; //S1是S h o r t S t r i n g类型 { $ H + } S2:string; //S2是A n s i S t r i n g类型 使用$ H规则的一个例外是,如果在定义时特地指定了长度(最大在2 5 5个字符内),那么总是 S h o r t S t r i n g: v a r S: string[63]; //63个字符的S h o r t S t r i n g字符串 1. AnsiString类型 A n s i S t r i n g (或长字符串)类型是在Delphi 2.0开始引入的,因为Delphi 1.0的用户特别需要一个容易 使用而且没有2 5 5个字符限制的字符串类型,而A n s i S t r i n g正好能满足这些要求。
• AnsiChar 这是标准的1字节的A N S I字符,程序员都对它比较熟悉。
• WideChar 这是2字节的U n i c o d e字符。
• Char 在目前相当于A n s i C h a r, 但在D e l p h i以后版本中相当于Wi d e C h a r.
记住因为一个字符在长度上并不表示一个字节,所以不能在应用程序中对字符长度进行硬编码,
而应该使用S i z e o f ( )函数。
注意Sizeof()标准函数返回类型或实例的字节长度。
===============字符串
字符串是代表一组字符的变量类型,每一种语言都有自己的字符串类型的存储和使用方法。
P a s c a l类型有下列几种不同的字符串类型来满足程序的要求:
• AnsiString 这是P a s c a l缺省的字符串类型,它由AnsiChar 字符组成,其长度没有限制,同时与
n u l l结束的字符串相兼容。
• ShortString 保留该类型是为了向后兼容Delphi 1.0,它的长度限制在2 5 5个字符内。
• WideString 功能上类似于A n s i S t r i n g,但它是由Wi d e C h a r字符组成的。
• PChar 指向n u l l结束的C h a r字符串的指针,类似于C的char * 或l p s t r类型。
• PAnsiChar 指向n u l l结束的A n s i C h a r字符串的指针。
• PWideChar 指向n u l l结束的Wi d e C h a r字符串的指针。
缺省情况下,如果用如下的代码来定义字符串,编译器认为是AnsiString 字符串:
v a r
S:string; //编译器认为S的类型是A n s i S t r i n g
当然,能用编译开关$ H来将s t r i n g类型定义为S h o r t S t r i n g,当$ H编译开关的值为负时, s t r i n g变量
是S h o r t S t r i n g类型;当$ H编译开关的值为正时(缺省情况),字符串变量是A n s i S t r i n g类型。下面的代码
演示了这种情况:
v a r
{ $ H - }
S1:string; //S1是S h o r t S t r i n g类型
{ $ H + }
S2:string; //S2是A n s i S t r i n g类型
使用$ H规则的一个例外是,如果在定义时特地指定了长度(最大在2 5 5个字符内),那么总是
S h o r t S t r i n g:
v a r
S: string[63]; //63个字符的S h o r t S t r i n g字符串
1. AnsiString类型
A n s i S t r i n g (或长字符串)类型是在Delphi 2.0开始引入的,因为Delphi 1.0的用户特别需要一个容易
使用而且没有2 5 5个字符限制的字符串类型,而A n s i S t r i n g正好能满足这些要求。