Delphi 的字符及字符串string、AnsiString、WideString、String[n]、ShortString

//最常用的 string
var
  str: string{定义}
begin
  str := '万一'; {赋值}
  ShowMessage(IntToStr(Length(str))); {长度是: 4}
end;

 
 
//长字符串 AnsiString; 在当前版本(2007)中的默认状态下, String 就是 AnsiString var   str: AnsiString; begin   str := '万一';   ShowMessage(IntToStr(Length(str))); {长度是: 4} end;
//宽字符串 WideString (效率不及 AnsiString) var   str: WideString; begin   str := '万一';   ShowMessage(IntToStr(Length(str))); {长度是: 2} end;
//定长字符串 var   str1: String[6]; {指定大小不能超过 255}   str2: String[100]; begin   {少给了也会占那些内存}   str1 := '万一';   ShowMessage(str1);                  {万一}   ShowMessage(IntToStr(Length(str1))); {4; 这是字符串的长度}   ShowMessage(IntToStr(SizeOf(str1))); {7; 这是占内存大小}   {多给了会被截断}   str1 := '万一的 Delphi 博客';   ShowMessage(str1);                  {万一的}   ShowMessage(IntToStr(Length(str1))); {6; 这是实际保存的字符串长度}   ShowMessage(IntToStr(SizeOf(str1))); {7; 这是占内存大小}   {问题: 不是声明大小为 6 吗? 怎么 SizeOf 是 7 ? }   {因为定长字符串会多出一个首字节来记忆字符串的实际长度}   {举例说明, 如果给 str2 按如下赋值, 那它的首字节(str2[0])肯定储存着字符 'A'}   str2 := 'iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii'; {65个}   ShowMessage(str2[0]);                {A}   ShowMessage(IntToStr(Ord(str2[0]))); {65; 这是 'A' 在 ASCII 序列中的序号, 用的就是它}   {那以后可以用 Ord(str2[0]) 来代替 Length 判断字符串的长度吗? }   {对定长字符串是可以的; 不但能读取, 还可以像 SetLength 一样设置} end;
//ShortString; 它相当于 String[255] var   str: ShortString; begin   str := '万一的 Delphi 博客';   ShowMessage(str);                  {万一的 Delphi 博客}   ShowMessage(IntToStr(SizeOf(str))); {256; 这是大小}   ShowMessage(IntToStr(Length(str))); {18 ; 这是实际长度}   ShowMessage(IntToStr(Ord(str[0]))); {18 ; 这是从首字节中取出的长度} end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值