Delphi中的字串

2021-04-09 02:56:34 字數 2079 閱讀 4673

delphi中的字串

一:各種字串 

字串是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); 

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中的字串

一 各種字串 字串是object pascal所有資料型別中最有用的型別。許多函式以字串為傳遞引數。由於在delphi中字串的定義和使用有各種方式,包括pascal中典型的字 符串 string delphi支援的長字串 ansistring 類似於c語言的字元陣列 array of char 指向...

用好Delphi中的字串

一 各種字串 字串是object pascal所有資料型別中最有用的型別。許多函式以字串為傳遞引數。由於在delphi中字串的定義和使用有各種方式,包括pascal中典型的字串 string delphi支援的長字串 ansistring 類似於c語言的字元陣列 array of char 指向字元...

用好Delphi中的字串

用好delphi中的字串 一 各種字串 字串是object pascal所有資料型別中最有用的型別。許多函式以字串為傳遞引數。由於在delphi中字串的定義和使用有各種方式,包括pascal中典型的字串 string delphi支援的長字串 ansistring 類似於c語言的字元陣列 array...