电竞比分网-中国电竞赛事及体育赛事平台

分享

AnsiString、String、WideString、UnicodeString

 quasiceo 2012-11-30

AnsiString、String、WideString、UnicodeString  

2012-09-09 12:19:46|  分類: Delphi|字號(hào) 訂閱

//AnsiStringStringWideString、UnicodeString本身就是一個(gè)指針類型

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]類型,首字節(jié)String[0]記錄了字符串的長度

procedure TForm9.BitBtn1Click(Sender: TObject);

var

  s5:String[20];

begin

  s5:='China(中國)';

  //@s5[0]指針類型強(qiáng)制轉(zhuǎn)換為PByte指針類型,然后再將其值取出;

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

end;

//AnsiString采用的是MBCS多字節(jié)字符集,StringWideString、UnicodeString采用的是Unicode字符集;

//MBCS字符集:英文字符用一個(gè)字節(jié)表示,漢字用兩個(gè)字節(jié)表示;GB2312Big5、GBK(GB2312的擴(kuò)展,向上兼容)等都是屬于MBCS字符集的范疇;Unicode字符集出臺(tái)之前,Big5GBK之間是相互獨(dú)立的,并不兼容;

//Unicode字符集:使用雙字節(jié)表示一個(gè)字符;容納了世界上所有文字和符號(hào),并進(jìn)行了統(tǒng)一編碼;

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);

//習(xí)慣上從左向右進(jìn)行編碼,但計(jì)算機(jī)是從右向左進(jìn)行讀取的,所以順序要倒一下;

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;

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多