用好Delphi中的字串

2021-04-12 18:47:54 字數 2142 閱讀 6079

一:各種字串

字串是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中的字串時,要時刻清楚該字串的型別,以免引起混淆。在理解字串時要把字串與指標,記憶體分配聯絡起來,加強理解。

用好Delphi中的字串

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

用好Delphi中的字串

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

Delphi中的字串

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