delphi中pchar、char、string的定義與區別

來源:互聯網
上載者:User

標籤:

Char是單個字元;
PChar 就是指向一個以Null 結尾的每個字元為一個位元組的字串的指標。 (可以看成是一個字串)
String是字元數組,以字元#0結尾;


Char只佔一位元組的空間,而Pchar儲存的是一個指標,在現在32位的系統中佔有1個指標位元組的大小。
type PChar=^Char;

 PChar類型是一個指向Char的指標,並使用Delphi的擴充文法.它也能夠作為一個String或者是一個Char數組指標來對待。

Pchar的用途

1.PChar最經常的使用方式就是作為用C或C++編寫的DLL,如Windows API的一個參數類型.
2.可以把一個PChar作為一個Char數組指標來對待.數組下標是Integer的子區間,從零開始. Delphi不對該數組提供任何邊界檢查.通常字串的結束用#0字元來表示.
3.通常通過與INC和DEC過程相似的加減整數來完成對PChar指標的算術運算. 

Pchar的轉換

長字串轉換到PChar不是自動的。他們之間的不同點導致他們的轉換存在問題。

1,長字串是引用計數的,而PChar不是
2,賦值給長字串是資料的拷貝,而PChar是指向資料的指標。
3,長字串是空止符結尾,並包含有字串的長度。而PChar是簡單的空止符結尾。( 空止符結尾指以#0結尾)

例子

//舉例:
var
pc: PChar;
begin
pc := ‘ABCD‘ + #0 + ‘EFGHIJKLMNOPQRSTUVWXYZ‘;
ShowMessage(pc); {ABCD}
end;

這個例子表明,Pchar可以做為一個以#0結尾的char字元數組
轉換:
string是delphi內定義類型,pchar則是一個指標字串,尾碼有#0。

相互轉換的話strpas(pchar);//pchar轉成string
strpcopy(pchar,string);
或直接pchar(string) //string轉成pchar

 

string ——> char的轉換

//舉例
procedure TForm1.Button1Click(Sender: TObject);
var
ch:array
[0..5] of char;
str:string;
i:integer;
begin
str :=‘123456‘;
move(str[1],ch,length(str));//Move說明:Move(從字串的多少位開始移,移到目標,移動多少個長度或大小,注意sizeof與legth的區別)
for
i:=0 to 5 do
    edit1.Text :=edit1.Text + ch[i];//show:123456
//move(str[3],ch,4);//ch=3456
end;

 

1、使用指向字串的指標,如果不是以0結尾,運行時就會出現錯誤。為了避免這種錯誤,需要在字串結尾人工加入0 
即char(0),或用strpcopy函數在字串結尾自動加0。
例3: 用strpcopy函數賦值會在字串s結尾自動加0。

 

var
s:array of char; {s[0]=4 s[1]=‘n‘ s[2]=‘e‘ s[3]=‘w‘ s[4]=0;} {p-->‘new‘}
p:pchar;
begin
p:[email protected][1];

strpcopy(p,‘new‘);{strpcopy函數在字串結尾自動加0}
label1.caption:=strpas(p);{new}

label2.caption:=s;{new}
//label3.caption:=intTostr(integer(s[0]));{4}

end;

delphi中pchar、char、string的定義與區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.