線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2792
推到 Plurk!
推到 Facebook!

用好Delphi中的字串

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-21 19:58:42 IP:61.221.xxx.xxx 未訂閱
此為轉貼資料 山東濱州地區郵電局電腦中心 作者 郝夕明 用好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);{將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中的字串時,要時刻清楚該字串的類型,以免引起混淆。在理解字串時要把字串與指標,記憶體分配聯繫起來,加強理解。 發表人 - jackkcg 於 2002/10/21 20:00:45
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-04-30 13:00:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!