字串型別用於描述乙個單獨的書面的文字和符號。
一、字元型別
delphi支援ansichar和widechar兩種基本的字元型別。ansichar型別變數使用單位元組來表示乙個字元,widechar使用兩個位元組來表示乙個字元。widechar和ansichar型別的變數之間不能相互賦值,例:
varwch: widechar;
ach: ansichar;
begin
ach := '國'; //錯誤。ach占用乙個位元組,而漢字占用兩個位元組。但編譯器不會提示。
ach := wch; //錯誤。編譯器會自動提示型別不匹配。
end;
delphi中最常用的字元型別是char型別。它是上面兩種字元型別其中一種的別名。delphixe中,char預設為widechar,但在之前的版本如delph7中,char型別代表ansichar。所以在使用時要特別注意。
二、字串型別
字串表示由字元組成的序列。delphi中常用的字串型別主要有四種:shortstring、ansistring、widestring、unicodestring。四種字串的簡要資訊如下:型別
最大長度
所需記憶體
用途 shortstring
255 byte
2-256 byte
容納ansichar
ansistring
2gb4-2gb
容納ansichar
widestring
2gb4-2gb
容納widechar
unicodestring
2gb4-2gb
容納unicode碼字元
其中,unicodestring和widestring基本無區別。delphi在程式設計中通常講字串宣告為string型別,此型別與unicodestring型別完全等價。在較早的版本中string等價於ansistring型別。
注意:delphixe中使用unicodestring下標引用得到的字元的值,而使用ansistring下標引用得到的卻是位元組的值。
1、shortstring
又稱為短字串(相對的其他三種型別稱為長字串),其實質上是乙個編譯器內建的字元陣列,類似下面的**(但是不等效)
type
shortstring = array[0.255] of ansichar;
其容納由256個ansichar組成的字串,但第乙個字元有特殊用途,所以shortstring型別的字串長度不能超過255byte。
shortstring的第乙個位元組的值等於字串的實際長度。所以獲取shortstring字串的實際長度有兩種:一是利用標準函式length();二是直接用第乙個位元組的值。例如:
varstr: shortstring;
str1: array[0..255] of ansichar;
begin
str := 'abcdefg';
str1 := 'abcdefg';
showmessage(inttostr(integer(str[0]))); //顯示7
showmessage(inttostr(length(str))); //顯示7
showmessage(inttostr(sizeof(str))); //顯示256
showmessage(str[1]); //顯示a
showmessage(str1[0]); //顯示a
end;
2、ansistring
是delphi最常用的型別,此型別的字串由ascii擴充套件字符集組成。很顯然,這種型別字串不能用於不同語言版本的作業系統,否則會出現一堆亂碼。
ansistring實質上是乙個指標型別,與普通的指標不同,此型別的指標專用於指向字串。利用標準函式sizeof()可知此型別變數在記憶體中占用4個位元組。所以ansistring最小值為4byte,而非0byte,也就是說,乙個空字串占用4個位元組。
由於ansistring型別的字串占用的空間最大可達2gb,為了節約記憶體,delphi將ansistring字串的本身分配在堆中,而在棧中留下乙個指向字串的指標,這個指標就是ansistring型別的變數。使用字串索引時要注意,索引應該從1開始,因為0索引的值標識了這個字串的長度。對ansistring型別字串進行索引只能得到某個位元組,而不一定是某個字元的值。如:
varstr: ansistring;
begin
str := '中國';
showmessage(str[1]);//顯示?
end;
str[1]不表示「中」,因為漢字在ascii擴充套件字符集中由兩個位元組組成,所以str[1]只能得到「中」的第乙個位元組。
DelphiXE3下的字串
在delphi中,我們常用string來宣告字串.procedure teststringfordelphi varstrname string nlenname integer begin strname 中國a nlenname length strname showmessage 字串 str...
delphi XE的字串處理
最近用delphi xe做了個東西,因為以前一直使用delphi 7做開發,delphi 7 到delphi xe有了很大的變化,最大的變化就是對unicode的支援,所以剛開始使用delphi xe時還有些不太習慣,尤其在字串處理的時候。delphi xe 增加了unicodestring 型別,...
字串型別的變化
1.format 方法的基本使用 模板字串 format 逗號分隔的引數 模板字串有一系列槽組成,用來控制修改字串中嵌入值出現的位置,其基本思想是將format 方法中逗號分隔的引數按照序號關係替換到模板字串的槽中槽用 表示,如果大括號中沒有序號則按照出現順序替換。如果大括號中指定了使用引數的序號,...