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

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

編輯:Delphi

 //最常用的 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