首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 6 SysUtils 單元函數速查手冊(二):語言資訊、記憶體管理、字串大小寫比較修剪引用、整數布林轉換與資源字串

     編輯:Delphi

本文為 Delphi 6 SysUtils.pas 函數大全系列第二部分,涵蓋 系統語言資訊、記憶體配置/釋放、退出程序註冊、字串指標舊式管理 (Deprecated)、字串大小寫轉換 (Ansi/Wide)、字串比較 (Ansi/Wide)、字串修剪/引用/去引用/行尾調整、識別符驗證、整數/十六進制/布林轉換、資源字串載入、低層檔案控制代碼操作 (開關/讀寫/搜尋/關閉)、檔案時間/存在性/屬性/唯讀/刪除/重命名/路徑拆解/磁碟空間/目錄操作/檔案搜尋。

核心函數分類速查

1. 系統語言與記憶體

函數用途備註
Languages取得系統語言集合物件可列舉 Languages.Name[i]
AllocMem配置歸零記憶體搭配 FreeMem 釋放
AddExitProc註冊程式結束程序建議改用 finalization 區段

2. 字串指標舊式管理 (Deprecated,僅維護舊碼用)

函數/程序用途
NewStr建立新字串指標
DisposeStr釋放字串指標
AssignStr更新字串指標內容 (自動釋放舊)
AppendStr字串追加 (相當於 Dest := Dest + S)

3. 字串大小寫轉換

分類標準Ansi (MBCS)Wide (Unicode)
大寫UpperCaseAnsiUpperCaseWideUpperCase
小寫LowerCaseAnsiLowerCaseWideLowerCase

標準版 僅處理 ASCII;Ansi 版 呼叫 Windows CharUpperBuff/CharLowerBuff 支援多位元組字元集 (中文/日文/韓文);Wide 版 支援 UTF-16 (Unicode)。

4. 字串比較

分類標準AnsiWide說明
比較 (區分大小寫)CompareStrAnsiCompareStrWideCompareStr>0 / =0 / <0
比較 (不區分大小寫)CompareTextAnsiCompareTextWideCompareText>0 / =0 / <0
相等判斷 (區分大小寫)—AnsiSameStrWideSameStrBoolean
相等判斷 (不區分大小寫)SameTextAnsiSameTextWideSameTextBoolean

5. 字串修剪、引用與行尾

函數用途多載
Trim / TrimLeft / TrimRight移除兩側/左側/右側不可見字元 (≤ #31)String / WideString
QuotedStrPascal 引用字串 (單引號雙寫)String
AnsiQuotedStr自訂引用字元AnsiQuotedStr('abc', '"') = '"abc"'
AnsiExtractQuotedStr從 PChar 提取引用字串本體變更 Src 指標位置
AnsiDequotedStr還原引用字串本體String
AdjustLineBreaks統一行尾為 CRLF (Win) / LF (Linux)String
IsValidIdent驗證合法 Pascal 識別符Boolean

6. 整數、十六進制與布林轉換

函數用途關鍵參數/行為
IntToStrInteger/Int64 → StringFormat('%d', [Value])
IntToHexInteger/Int64 → 十六進制字串Digits 指定最小寬度補 0
StrToIntString → Integer失敗拋例外
StrToIntDefString → Integer (預設值)失敗回 Default
TryStrToIntString → Integer (安全)Boolean 回傳,out Value
StrToInt64 / Def / TryInt64 版本
StrToBoolString → Boolean失敗拋例外
StrToBoolDefString → Boolean (預設值)
TryStrToBoolString → Boolean (安全)D6 Bug:需初始化 TrueBoolStrs/FalseBoolStrs
BoolToStrBoolean → StringUseBoolStrs=True 時 -1/0,False 時 True/False

TryStrToBool 修正範例:


SetLength(TrueBoolStrs, 2);
SetLength(FalseBoolStrs, 2);
TrueBoolStrs[0] := 'True';  FalseBoolStrs[0] := 'False';
TrueBoolStrs[1] := 'Yes';   FalseBoolStrs[1] := 'No';
if TryStrToBool(Edit1.Text, B) then CheckBox1.Checked := B;

7. 資源字串載入

函數用途
LoadStr依識別碼載入字串資源
FmtLoadStr格式化載入字串資源 (配合 Format 參數)

8. 低層檔案控制代碼操作

函數用途關鍵參數/回傳
FileOpen開啟檔案Mode: fmOpenRead/Write/ReadWrite/ShareDenyNone...,Handle (<0 失敗)
FileCreate建立檔案Handle,可指定 Rights (Linux)
FileRead讀取至緩衝區回傳位元組數,失敗負數
FileWrite寫入緩衝區回傳位元組數,失敗負數
FileSeek移動檔案指標Origin: 0=BOF, 1=Current, 2=EOF,Int64 版支援大檔案
FileClose關閉檔案代碼必須呼叫釋資源

9. 檔案資訊、屬性與路徑拆解

函數用途備註
FileAge檔案建立時間 (整數編碼)不存在 -1,配合 FileDateToDateTime 轉 TDateTime
FileExists檔案是否存在含隱藏檔
DirectoryExists目錄是否存在
ForceDirectories遞迴建立多層目錄Boolean
FindFirst開始搜尋Attr: faAnyFile 等,回傳 0 成功
FindNext繼續搜尋
FindClose結束搜尋必須呼叫

實用範例精選

列舉系統支援語言


for I := 0 to Languages.Count - 1 do
  Memo1.Lines.Add(Languages.Name[I]);
// 輸出: 繁體中文(台灣), 簡體中文(中國), English(United States)...

安全配置記憶體並自動歸零


var P: PInteger;
begin
  P := AllocMem(SizeOf(Integer)); // 自動歸零
  P^ := 100;
  ShowMessage(IntToStr(P^));
  FreeMem(P, SizeOf(Integer));
end;

檔案搜尋完整模板


var SR: TSearchRec;
begin
  if FindFirst('C:\Temp\*.*', faAnyFile, SR) = 0 then try
    repeat
      Memo1.Lines.Add(SR.Name);
    until FindNext(SR) <> 0;
  finally FindClose(SR); end;

路徑拆解常用組合


FullPath := 'C:\Projects\MyApp\Data\config.ini';
DirPath  := ExtractFilePath(FullPath);   // 'C:\Projects\MyApp\Data\'
DirOnly  := ExtractFileDir(FullPath);    // 'C:\Projects\MyApp\Data'
Drive    := ExtractFileDrive(FullPath);  // 'C:'
FileName := ExtractFileName(FullPath);   // 'config.ini'
Ext      := ExtractFileExt(FullPath);    // '.ini'
Short    := ExtractShortPathName(FullPath); // 'C:\PROJEC~1\MYAPP~1\DATA\CONFIG.INI'

本部分涵蓋的函數是 Delphi 日常開發最高頻的「字串處理 + 檔案系統互動」核心集合。掌握 Ansi*/Wide* 版本對多語系支援至關重要;檔案操作務必養成 try...finally FindClose/Close 習慣避免資源洩漏。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved