用好DELPHI中的字串

來源:互聯網
上載者:User
一:各種字串 
  字串是Object Pascal所有資料類型中最有用的類型。許多函數以字串為傳遞參數。由於在Delphi中字串的定義和使用有各種方式,包括Pascal中典型的字串(String),Delphi支援的長字串(ANSIString),類似於C語言的字元數組(Array of Char),指向字元的指標(Pchar)等。下面的文章就跟談談這些類型在定義和應用中的區別和注意事項。 
1. 傳統的Pascal字串 
  在Pascal中,典型的字串是一定長度的字元序列。每一字串有一設定的長度(預設值為255),下面是一個例子: 
Var 
Address:String; 
Code:String[50]; 
Address是一長度為255的字串,Code的最大長度為50。 
傳統的Pascal字串長度不能超過255。 
可以用字串串連操作"+"把字串串連在一起: 
Result:=String1+String2; 
2. Delphi中的長字串 
  Delphi除了支援傳統的Pascal短字串還支援長字串。長字元稱為ANSIString。長字串動態分配記憶體,即用字串時才分配字串所需記憶體,所以其長度不受限制。在Delphi中你如果用String1:String作類型說明,則String1既可能是短字串也可能是長字串,這取決於編譯器中$H開關的設定。預設值為$H+,代表ANSI長字串,VCL中的組件使用ANSI長字串。長字串以null結束,這就說明長字串與C語言中的以null結束的字串完全相容。 
可以通過SetLength函數設定字串的最大長度: 
SetLength(String1,100);用TrimLeft,TrimRight和Trim函數分別來消除字串開頭,結尾和首尾的空白區。 
3. 類似於C的字元數組 
  可以用以0為起點的數組來儲存以null結束的字串。如下定義: 
Var 
Name:Array[0..50] of Char; 
4. Pchar指標 
  如果Delphi中的Exended Syntax 已經設定(預設值),以0為起點的字元數組就和指向字元的指標Pchar完全相容,因為以0為起點的字元數組名即指向該字元數組首字元的指標。可以將字串直接付值給Pchar指標。例如: 
var 
P: PChar; 
begin 
P := 'Hello world'; 
end; 
  這樣P就指向儲存字串'Hello world'並以null結束的一塊記憶體。 
許多Windows的應用程式介面API函數要求用Pchar類型作參數。Pchar指標在使用是首先用GetMem(var P: Pointer; Size: Integer)函數申請分配記憶體,程式結束時用FreeMem(var P: Pointer[; Size: Integer])函數釋放記憶體。例如: 
Var WinDir,SysDir:Pchar; 
Begin 
GetMem(WinDir,256);{為指標分配記憶體} 
GetWindowsDirectory(WinDir,128);{將Windows安裝目錄放至WinDir} 
ShowMessage('Windows directory is'+WinDir);{顯示結果} 
End; 
二:字串轉換 
  以上介紹了Delphi中的四類字串的定義和使用。由於各類函數對字串參數類型要求不一,這就需要進行字串類型轉換。 
1. 可以用StrPas將以null結束的字串轉換為Pascal短字串。StrpCopy則完成相反的轉換。 
2. 因為長字串以null結束,所以可以用強制類型轉換將長字串轉換成Pchar類型。用法是:Pchar(s),s是一個長字串。強制類型轉換返回一個指向長字串首字元的指標,並且所指字串以null 結束。例如: 
Var 
Caption,Message:string; 
Caption:='Hello World!'; 
Mssage:='This is a test of long string'; 
MessageBox(0,Pchar(Message),Pchar(Caption),MB_OK); 
小結:在使用Delphi中的字串時,要時刻清楚該字串的類型,以免引起混淆。在理解字串時要把字串與指標,記憶體配置聯絡起來,加強理解。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.