Delphi有三种类型的字符:
AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉。
WideChar这是2字节的Unicode字符。
Char在目前相当于AnsiChar,但在Delphi 2010 以后版本中相当于WideChar.
记住因为一个字符在长度上并不表示一个字节,所以不能在应用程序中对字符长度进行硬编码,
而应该使用Sizeof()函数。注意Sizeof()标准函数返回类型或实例的字节长度。
Delphi有下列几种不同的字符串类型 String:
ShortString保留该类型是为了向后兼容 Delphi1.0,它的长度限制在255个字符内。
ShortString[0] = len : $H- 代表 ShortString
AnsiString是Pascal缺省的字符串类型,它由AnsiChar字符组成,其长度没有限制,
同时与null结束的字符串相兼容。<Delphi2.0开始引入> : $H+ 代表 AnsiString
WideString功能上类似于AnsiString,但它是由WideChar字符组成的。
WideString没有引用计数,所以将一个WideString字符串赋值给另一个WideString字符串时,
就需要从内存中的一个位置复制到另一个位置。这使得WideString在速度和内存的利用上不如AnsiString有效。
缺省情况下,编译器认为是AnsiString字符串< <Delphi2010 String 默认为 WideString>
Delphi有下列几种不同的字符串指针类型:
PChar指向null结束的Char字符串的指针,类似于C的char*或lpstr类型。
PAnsiChar指向null结束的AnsiChar字符串的指针。
PWideChar指向null结束的WideChar字符串的指针。<Delphi2010 PChar 默认为 PWideChar>
字符数组
静态字符数组 CharArray : array[0..Length-1] of Char;
动态字符数组 CharArray : array of Char;
动态数组的构造和静态数组完全不同, 它和 String 的构造相似
String : RefCount : Length : Char Char .... 0x00 < Delphi >
DynArry : RefCount : Length : Char Char .... 0x00 < Programmer >
StaArry : : Char Char .... 0x00 < Programmer >
: PChar = PChar( String ) = PChar( DynArray ) = PChar( StaArray )
StrLen( PChar ) : 字符个数, StrLen( PChar ) * SizeOf( Char ) : 字节个数 ( WideChar = 2 )
Length( String ) : 字符个数, Length( PChar ) * SizeOf( Char ) : 字节个数 ( AnsiChar = 1 )