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

tinifile 的問題

答題得分者是:tick228
wangccw
一般會員


發表:18
回覆:33
積分:15
註冊:2005-01-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2017-10-23 17:47:21 IP:125.227.xxx.xxx 未訂閱
Tinifile 無法處理utf8 ,所以改用 tmeminifile,而 tmeminifile 的資料是存在記憶體內,沒有ini 檔 64k的限制 。
但 Tinifile 有 tmeminifile 無法取代的地方,像是 多個應用程式(例如 A,B應用程式) 共用一組 ini 檔,若使用 tmeminifile ,會有 A 應用程式修改了 ini 後, B 應用程式無法立即反應的問題。(A,B程式各自獨立,有各自的 tmeminfile ,但指向同一個 ini 檔)
請問各位先進,有沒有第三方元件是和 Tinifile 一樣,但可以處理 utf8 的元件,謝謝!!
編輯記錄
wangccw 重新編輯於 2017-10-23 18:01:19, 註解 無‧
taishyang 重新編輯於 2017-10-24 09:35:29, 註解 無‧
tick228
中階會員


發表:1
回覆:28
積分:55
註冊:2003-11-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2017-10-23 20:20:00 IP:117.19.xxx.xxx 未訂閱
自已做

[code delphi]
procedure TMainForm.LoadINI(const INI: TCustomINIFile);
var
Section: String;
begin
// Reload INI File values
if INI is TMemINIFile then
TMemINIFile(INI).Rename(INI.FileName, True);

// Read settings
Section := 'MainForm';
IntValue := ReadInteger(Section, 'IntValue', 0);
StrValue := ReadString(Section, 'StrValue', '');
end;

procedure TMainForm.SaveINI(const INI: TCustomINIFile);
var
Section: String;
begin
// Write settings
Section := 'MainForm';
WriteInteger(Section, 'IntValue', IntValue);
WriteString(Section, 'StrValue', StrValue);

// Update INI File values
if INI is TMemINIFile then
TMemINIFile(INI).UpdateFile;
end;
[/code]

若要達到即時共用, 就定時呼叫 LoadINI() 及 SaveINI()

比較好的方法是, 要取得參數值時, 才呼叫 LoadINI();
有改變參數值時, 才呼叫 SaveINI();
這樣才能避免頻繁的對 INI 檔案 Read/Write

===================引 用 wangccw 文 章===================
Tinifile 無法處理utf8 ,所以改用 tmeminifile,而 tmeminifile 的資料是存在記憶體內,沒有ini 檔 64k的限制 。
但 Tinifile 有 tmeminifile 無法取代的地方,像是 多個應用程式(例如 A,B應用程式) 共用一組 ini 檔,若使用 tmeminifile ,會有 A 應用程式修改了 ini 後, B 應用程式無法立即反應的問題。(A,B程式各自獨立,有各自的 tmeminfile ,但指向同一個 ini 檔)
請問各位先進,有沒有第三方元件是和 Tinifile 一樣,但可以處理 utf8 的元件,謝謝!!
系統時間:2017-11-19 22:17:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!