程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 的字符及字符串[1] - string、AnsiString、WideString、S

Delphi 的字符及字符串[1] - string、AnsiString、WideString、S

編輯:Delphi

Delphi 的字符及字符串[1] - 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 按如下賦值, 那它的首字節 (sstr2[0])肯定儲存著字符 'A'}
str2 := 'iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii'; {65個}
ShowMessage(str2[0]);        {A}
ShowMessage(IntToStr(Ord(str2[0]))); {65s; 這是 '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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved