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

C++Builder 以 WIN.INI 儲存應用程式設定:WriteProfileString/GetProfileInt 實作

     編輯:關於C++

一、為何選擇 WIN.INI?

註冊表隨軟體增加龐大易出錯;少量設定(視窗位置、使用者偏好)用 WIN.INI 更直觀、易手動編輯、備份遷移簡單。

二、核心 API

BOOL WriteProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString);
UINT GetProfileInt(LPCTSTR lpAppName, LPCTSTR lpKeyName, INT nDefault);
  • lpAppName:區段名稱(方括號內,如 [MyApp])。
  • lpKeyName:項目名稱(等號左側)。
  • lpString:項目值(等號右側)。
  • nDefault:讀取失敗時傳回的預設值。

特殊清除行為

  • lpKeyName = NULL → 清除整個區段。
  • lpString = NULL → 清除該項目(整行移除)。

三、完整範例程式

表單:Edit1(輸入值)、Edit2(顯示讀取值)、Button1「寫入」、Button2「讀取」、Button3「清除」。

// Button1 寫入
void __fastcall TForm1::Button1Click(TObject *Sender) {
    WriteProfileString("範例程式", "項目", Edit1->Text.c_str());
}

// Button2 讀取
void __fastcall TForm1::Button2Click(TObject *Sender) {
    UINT val = GetProfileInt("範例程式", "項目", 100); // 預設 100
    Edit2->Text = IntToStr(val);
}

// Button3 清除
void __fastcall TForm1::Button3Click(TObject *Sender) {
    WriteProfileString("範例程式", NULL, NULL); // 清除整區段
}

四、驗證結果

  1. 輸入 3265 點「寫入」。
  2. 執行 sysedit 檢視 WIN.INI 尾端:
    [範例程式]
    項目=3265
  3. 點「讀取」→ Edit2 顯示 3265。
  4. 點「清除」→ 區段移除。

五、現代替代方案

  • TIniFile / TMemIniFile(VCL 封裝):IniFile->WriteString("Section", "Key", "Value"),跨平台支援較好。
  • 註冊表:TRegistry 或 RegSetValueEx,適合系統層級設定。
  • XML/JSON 設定檔:結構化資料、巢狀結構、版本控管友善。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved