Delphi的字符(Char), 字符串(String), 字符串指针( PChar ), 字符数组 array of char

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 )

 

 

posted @   IAmAProgrammer  阅读(948)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示