熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

好用的Delphi字符串

2022-06-13   來源: Delphi編程 

   各種字符串

  字符串是Object Pascal所有數據類型中最有用的類型許多函數以字符串為傳遞參數由於在Delphi中字符串的定義和使用有各種方式包括Pascal中典型的字符串(String)Delphi支持的長字符串(ANSIString)類似於C語言的字符數組(Array of Char)指向字符的指針(Pchar)等下面的文章就跟談談這些類型在定義和應用中的區別和注意事項

  . 傳統的Pascal字符串

  在Pascal中典型的字符串是一定長度的字符序列每一字符串有一設定的長度(缺省值為下面是一個例子 Var Address:String; Code:String[]; Address是一長度為的字符串Code的最大長度為 傳統的Pascal字符串長度不能超過 可以用字符串連接操作+把字符串連接在一起 Result:=String+String;

   . Delphi中的長字符串

  Delphi除了支持傳統的Pascal短字符串還支持長字符串長字符稱為ANSIString長字符串動態分配內存即用字符串時才分配字符串所需內存所以其長度不受限制在Delphi中你如果用String:String作類型說明則String既可能是短字符串也可能是長字符串這取決於編譯器中$H開關的設置默認值為$H+代表ANSI長字符串VCL中的組件使用ANSI長字符串長字符串以null結束這就說明長字符串與C語言中的以null結束的字符串完全兼容 可以通過SetLength函數設置字符串的最大長度 SetLength(String);用TrimLeftTrimRight和Trim函數分別來消除字符串開頭結尾和首尾的空白區

  . 類似於C的字符數組

  可以用以為起點的數組來存儲以null結束的字符串如下定義 Var Name:Array[] of Char;

  . Pchar指針   

  如果Delphi中的Exended Syntax 已經設置(缺省值)為起點的字符數組就和指向字符的指針Pchar完全兼容因為以為起點的字符數組名即指向該字符數組首字符的指針可以將字符串直接付值給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 WinDirSysDir:Pchar; Begin GetMem(WinDir);{為指針分配內存} GetWindowsDirectory(WinDir);{將Windows安裝目錄放至WinDir} ShowMessage(Windows directory is+WinDir);{顯示結果} End;

  字符串轉換   

  以上介紹了Delphi中的四類字符串的定義和使用由於各類函數對字符串參數類型要求不一這就需要進行字符串類型轉換

  . 可以用StrPas將以null結束的字符串轉換為Pascal短字符串StrpCopy則完成相反的轉換

  . 因為長字符串以null結束所以可以用強制類型轉換將長字符串轉換成Pchar類型用法是Pchar(s)s是一個長字符串強制類型轉換返回一個指向長字符串首字符的指針並且所指字符串以null 結束例如 Var CaptionMessage:string; Caption:=Hello World!; Mssage:=This is a test of long string; MessageBox(Pchar(Message)Pchar(Caption)MB_OK);

  小結在使用Delphi中的字符串時要時刻清楚該字符串的類型以免引起混淆在理解字符串時要把字符串與指針內存分配聯系起來加強理解


From:http://tw.wingwit.com/Article/program/Delphi/201311/24856.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.