分享

AnsiString、String、WideString、UnicodeString

 quasiceo 2012-11-30

AnsiString、String、WideString、UnicodeString  

2012-09-09 12:19:46|  分类: Delphi|字号 订阅

//AnsiStringStringWideStringUnicodeString本身就是一个指针类型

procedure TForm9.BitBtn1Click(Sender: TObject);

var

  s1:System.AnsiString;

  s2:System.String;

  s3:System.WideString;

  s4:System.UnicodeString;

  s5:String[10];

begin

  Dialogs.ShowmessageFmt('%d,%d,%d,%d,%d',[SizeOf(s1),SizeOf(s2),SizeOf(s3),SizeOf(s4),SizeOf(s5)]);  {4,4,4,4,11}

end;

//String[n]类型,首字节String[0]记录了字符串的长度

procedure TForm9.BitBtn1Click(Sender: TObject);

var

  s5:String[20];

begin

  s5:='China(中国)';

  //@s5[0]指针类型强制转换为PByte指针类型,然后再将其值取出;

  ShowmessageFmt('%d',[PByte(@s5[0])^]);  {11}

end;

//AnsiString采用的是MBCS多字节字符集,StringWideStringUnicodeString采用的是Unicode字符集;

//MBCS字符集:英文字符用一个字节表示,汉字用两个字节表示;GB2312Big5GBK(GB2312的扩展,向上兼容)等都是属于MBCS字符集的范畴;Unicode字符集出台之前,Big5GBK之间是相互独立的,并不兼容;

//Unicode字符集:使用双字节表示一个字符;容纳了世界上所有文字和符号,并进行了统一编码;

procedure TForm9.BitBtn1Click(Sender: TObject);

var

  s1:System.AnsiString;

  s2:System.String;

  s3:System.WideString;

  s4:System.UnicodeString;

begin

s1:='abc(中国)';

ShowmessageFmt('%d,%d',[Length(s1),SizeOf(s1[1])]); {9,1}

s2:='abc(中国)';

ShowmessageFmt('%d,%d',[Length(s2),SizeOf(s2[1])]); {7,2}

s3:='abc(中国)';

ShowmessageFmt('%d,%d',[Length(s3),SizeOf(s3[1])]); {7,2}

s4:='abc(中国)';

ShowmessageFmt('%d,%d',[Length(s4),SizeOf(s4[1])]); {7,2}

end;

//GB2312编码表;Unicode编码表;

procedure TForm9.BitBtn1Click(Sender: TObject);

var

  s1:System.AnsiString;

  s2:System.String;

  s3:System.WideString;

  s4:System.UnicodeString;

begin

//GB2312编码表中,""的编码为BABA,""的编码为D7D6;

SetLength(s1,4);

//习惯上从左向右进行编码,但计算机是从右向左进行读取的,所以顺序要倒一下;

System.PWord(@s1[1])^:=$BABA;

System.PWord(@s1[3])^:=$D6D7; {D7D6顺序要倒一下}

Showmessage(s1);  {汉字}

//Unicode编码表,""的编码为6C49,""的编码为5B57;

SetLength(s2,2);  {汉字}

System.PWord(@s2[1])^:=$6C49;

System.PWord(@s2[2])^:=$5B57;

Showmessage(s2);  {汉字}

SetLength(s3,2);

System.PInteger(@s3[1])^:=$5B576C49;

Showmessage(s3);  {汉字}

SetLength(s4,2);

System.PInteger(@s4[1])^:=($5B57 shl 16) or $6C49;

Showmessage(s4);  {汉字}

end;

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多