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

Delphi 6 SysUtils 單元函數速查手冊(五):安全載入庫、環境變數、原子操作、GUID 與套件管理

     編輯:Delphi

本文為 Delphi 6 SysUtils.pas 函數大全系列第五部分,涵蓋 Kylix 相關訊號處理、動態載入庫、例外訊息處理、多位元組字元 (MBCS) 處理、路徑分隔符操作、字串替換/換行、命令列參數解析、物件釋放輔助、介面支援檢查、GUID 操作、套件載入/資訊、作業系統錯誤觸發、終止程序管理、安全載入庫、環境變數 及 原子操作。

重點函數分類速查

1. 動態載入庫與模組資訊

函數用途關鍵參數/回傳
LoadLibrary載入 DLL回傳 HMODULE
FreeLibrary釋放 DLLBoolean
GetProcAddress取得函數位址Pointer
GetModuleHandle取得已載入模組代碼HMODULE
GetModuleName取得模組檔名參數 0 = 當前程式
GetPackageModuleHandle取得套件模組代碼HMODULE

2. 例外與錯誤處理

函數用途
ExceptionErrorMessage取得指標操作失敗訊息長度,內容置於緩衝區
ShowException顯示指標操作失敗錯誤 (支援主控台)
Abort觸發靜默中止 (EAbort),不顯示錯誤訊息
OutOfMemoryError觸發記憶體不足例外
RaiseLastOSError拋出最後一個 OS 錯誤碼對應的例外
RaiseLastWin32Error(Deprecated) 改用 RaiseLastOSError
Win32Check檢查 API 回傳值,非零則拋出例外

3. 多位元組字元 (MBCS) 字串處理

函數用途備註
ByteType取得字串指定位置字元 MBCS 類型單一字元/前導/尾隨位元組
StrByteTypePChar 版 ByteTypeIndex 從 0 起算
ByteToCharLen字串中多位元組字元數MaxLen 指定處理位元組數
CharToByteLen字串中位元組數MaxLen 指定處理字元數
ByteToCharIndex位元組索引 → 字元索引中文字佔 2 位元組
CharToByteIndex字元索引 → 位元組起始索引
StrCharLength第一個字元寬度 (位元組數)
StrNextChar下一個字元指標StrNextChar('1234') = '234'
CharLength指定位置字元寬度
NextCharIndex下一個字元位置索引

4. 路徑與分隔符操作

函數用途
IsPathDelimiter指定位置是否為路徑分隔符
IsDelimiter指定位置是否為自訂分隔符集合
IncludeTrailingPathDelimiter確保路徑以分隔符結尾
ExcludeTrailingPathDelimiter移除尾部路徑分隔符
LastDelimiter最後一個分隔符位置

5. 字串比較與檔名處理

函數用途
AnsiCompareFileName比較兩檔名 (區分大小寫)
SameFileName檔名是否相等 (區分大小寫)
AnsiLowerCaseFileName轉小寫檔名
AnsiUpperCaseFileName轉大寫檔名
AnsiPos子字串首次出現位置 (1-based)
AnsiStrPosPChar 版 AnsiPos
AnsiStrRScan字元最後出現位置 (PChar)
AnsiStrScan字元首次出現位置 (PChar)

6. 進階字串操作

函數用途關鍵參數
StringReplace字串替換rfReplaceAll 全部、rfIgnoreCase 忽略大小寫
WrapText自動換行BreakStr 換行符、BreakChars 斷字符、MaxCol 最大欄寬
FindCmdLineSwitch檢查命令列參數支援 /switch, -switch
FreeAndNil釋放物件並設為 nil防止重複釋放
Supports檢查物件/類別是否支援介面多載支援 IInterface/TObject/TClass

7. GUID 操作

函數用途
CreateGUID建立新 GUID,回傳 HResult (S_OK 成功)
StringToGUID字串轉 GUID,格式錯誤拋例外
GUIDToStringGUID 轉字串
IsEqualGUID比較兩 GUID 是否相等

8. 套件 (Package) 管理

函數/程序用途
LoadPackage載入套件,回傳 HMODULE
UnloadPackage卸載套件
GetPackageInfo列舉套件內單元/需求資訊
GetPackageDescription取得套件描述字串
InitializePackage初始化套件 (呼叫 Register)
FinalizePackage終結套件

9. 終止程序管理

  • AddTerminateProc:註冊程式結束時執行的程序
  • CallTerminateProcs:執行所有終止程序 (不建議手動呼叫)

10. 安全載入庫與環境變數

函數用途
SafeLoadLibrary安全載入 DLL (抑制錯誤對話框 SEM_NOOPENFILEERRORBOX)
GetEnvironmentVariable讀取環境變數
SetEnvironmentVariable設定環境變數 (配合上函數使用)

11. 原子操作 (Kylix/多執行緒)

  • InterlockedIncrement/Decrement:原子增減
  • InterlockedExchange:原子交換
  • InterlockedExchangeAdd:原子累加

實用範例精選

取得模組檔名


var vHandle: THandle;
begin
  vHandle := LoadLibrary(PChar(Edit1.Text));
  Caption := GetModuleName(vHandle);
  FreeLibrary(vHandle);
end;

建立 GUID


var vGUID: TGUID;
begin
  CreateGUID(vGUID);
  Edit1.Text := GUIDToString(vGUID);
end;

安全載入庫並抑制錯誤視窗


var hMod: HMODULE;
begin
  hMod := SafeLoadLibrary('mylib.dll');
  if hMod <> 0 then begin
    // GetProcAddress...
    FreeLibrary(hMod);
  end;
end;

環境變數讀寫


SetEnvironmentVariable('MY_VAR', 'TestValue');
ShowMessage(GetEnvironmentVariable('MY_VAR')); // 顯示 TestValue

SysUtils 是 Delphi 核心工具單元,掌握上述函數能處理 90% 以上的字串、路徑、錯誤、動態載入與系統互動需求。建議搭配 IDE F1 線上說明深入研讀各函數完整簽名與邊界條件。

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