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