全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1446
推到 Plurk!
推到 Facebook!

对INI文件的操作

尚未結案
vclphi
一般會員


發表:28
回覆:39
積分:13
註冊:2003-03-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-24 16:26:16 IP:218.5.xxx.xxx 未訂閱
我曾提了个问题,名为“如何删除INI文件关键字 ”,后经Wnhoo兄指点,问题基本解决了。原文见"http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30363"。现我将Wnhoo兄的代码略加修改,如下: //STAT.INI [System] VESA=1 ScreenMode=VM_800X600X256 SystemCharSize=16 CurrentGroup=WORD MainTitle1=ok MainTitle=1987 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls,INIFILES; type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; Button2: TButton; Edit1:TEdit; procedure listTitle; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure ListBox1DblClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.listTitle; var filename:string; i:integer; breedno:tstringlist; inifile:TINIFILE; begin listBox1.Clear; //取得文件路径 filename:=ExtractFilePath(paramstr(0)) 'stat.ini'; inifile:=TInifile.Create(filename); breedno:=tstringlist.create; inifile.ReadSection('System',breedno); for i:=0 to breedno.Count-1 do listbox1.items.add(breedno.Strings[i]); breedno.Free ; inifile.Free ; end; procedure TForm1.FormCreate(Sender: TObject); begin listTitle; end; procedure TForm1.Button1Click(Sender: TObject); var filename:string; inifile:TINIFILE; begin listBox1.Clear; //取得文件路径 filename:=ExtractFilePath(paramstr(0)) 'stat.ini'; inifile:=TInifile.Create(filename); //删除SYSTEM->listBox1中指定的值 if listBox1.ItemIndex>=0 then inifile.DeleteKey('system',listBox1.Items[ListBox1.itemIndex]); inifile.UpdateFile ; inifile.Free ; listTitle; end; procedure TForm1.Button2Click(Sender: TObject); var filename:string; inifile:TINIFILE; vs:string; begin listBox1.Clear; //取得文件路径 filename:=ExtractFilePath(paramstr(0)) 'stat.ini'; inifile:=TInifile.Create(filename); if listBox1.ItemIndex>=0 then begin vs:=inifile.ReadString('system',listBox1.Items[ListBox1.itemIndex],'err') inifile.DeleteKey('system',listBox1.Items[ListBox1.itemIndex]); inifile.WriteString('system',edit1.Text,vs); inifile.UpdateFile ; end; inifile.Free ; listTitle; end; procedure TForm1.ListBox1DblClick(Sender: TObject); ...... end. 现问题是: (1)Button1Click后并没有进行删除操作。我将Wnhoo兄的 inifile.DeleteKey('System','MainTitle');改为 inifile.DeleteKey('url',list1.Items[List1.itemIndex]);。 (2)Button2Click后产生错误。我加VS变量是为了保留关键字的值,如MainTitle=1987中,我只想将MainTitle改为edit1.Text中的字符,而1987不变。 (3)希望ListBox1DblClick后edit1.Text:=关键字的值,如DblClick的是MainTitle,则edit1.Text:=1987。
turboted
版主


發表:95
回覆:754
積分:452
註冊:2002-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-24 16:53:02 IP:218.166.xxx.xxx 未訂閱
我不知道為什麼你要把'system'改成'url' 如果檔案內容還是一樣的話 //STAT.INI [System] VESA=1 ScreenMode=VM_800X600X256 SystemCharSize=16 CurrentGroup=WORD MainTitle1=ok MainTitle=1987 解答 (1)inifile.DeleteKey('System',ListBox1.Items.Strings[ListBox1.ItemIndex]); (2)看不懂你要幹嘛 (3)edut1.text := ini.ReadInteger ('System','MainTile',0);
vclphi
一般會員


發表:28
回覆:39
積分:13
註冊:2003-03-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-24 17:31:10 IP:218.5.xxx.xxx 未訂閱
“我不知道為什麼你要把'system'改成'url'”:笔误,应是'system'。 (1)用inifile.DeleteKey('System',ListBox1.Items.Strings[ListBox1.ItemIndex]);仍旧没有进行删除操作。 (2)进行改名,如将MainTitle=1987改为ACAD=1987,而这ACAD由Edit1输入。 (3)我的意思是随便DblClick哪一项,Edit1.text:=该项的值,如选的是VESA,则Edit1.text:=1,选的是MainTitle1,则Edit1.text:=ok。 (为方便起见,今后假定INI文件的数据类型皆为数据类型)
vclphi
一般會員


發表:28
回覆:39
積分:13
註冊:2003-03-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-24 17:41:25 IP:218.5.xxx.xxx 未訂閱
问题3,我用如下代码: procedure TForm1.ListBox1DblClick(Sender: TObject); var filename:string; inifile:TINIFILE; begin filename:=ExtractFilePath(paramstr(0)) 'stat.ini'; inifile:=TInifile.Create(filename); edit1.text := inifile.Readstring ('System',ListBox1.Items.Strings[ListBox1.ItemIndex],'0'); inifile.Free ; end; 可以吗?
turboted
版主


發表:95
回覆:754
積分:452
註冊:2002-07-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-24 18:32:26 IP:218.166.xxx.xxx 未訂閱
問題一 我試過可以,你先式 inifile.DeleteKey('System','MainTitle')能不能殺除 如果可能,就正常,如果不行,請check您轉入的字串是不是正確的 問題二 我沒看到有什麼直接的方法 不然你就先把那行殺了,再插新的進去 問題三 看來是可行的 但為什麼要問我行不行 請您自已實驗可以嗎 難到您寫code是不compiler而只用來『看』的?
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-24 19:09:03 IP:61.155.xxx.xxx 未訂閱
turboted 兄: 不好意思写错了!!!! vclphi 兄: ini文件操作 1.可以删除、更改选中的关键字 2.点击显示值 针对您的问题,我已经修改了一下,参见!!!!! http://delphi.ktop.com.tw/topic.php?TOPIC_ID=31062 风花雪月 e梦情缘
發表人 - wnhoo 於 2003/05/24 19:22:25
------
风花雪月 e梦情缘
turboted
版主


發表:95
回覆:754
積分:452
註冊:2002-07-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-24 19:14:21 IP:218.166.xxx.xxx 未訂閱
感謝您的好意 但問題不是我發問的,謝謝
系統時間:2024-05-05 1:35:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!