TiniFile初學者問題~ |
尚未結案
|
phoenix_csie
一般會員 發表:6 回覆:15 積分:4 註冊:2005-10-11 發送簡訊給我 |
小弟稍微的爬了文後,試著練習以下的程式碼
http://delphi.ktop.com.tw/topic.php?topic_id=36220
卻發現他會出現is not a member of 'TForm1'的錯誤訊息,請問是缺少了哪一個部份?謝謝! 我大約知道了有關TunuFile的語法了(以下程式碼),只是要如何寫在BCB裡頭還是相當模糊。
EX:我在From上放一個Edit,能夠將輸入的內容寫入到一個ini,甚至也可以從這個ini讀入到Edit內,請問要如何實作出來,想請有經驗的版有給予指導謝謝。
// 把資料寫入 ini 檔案 AnsiString szPath=ExtractFilePath(Application->ExeName); TIniFile *ini=new TIniFile(szPath "Data.ini"); for(int i=0; i<10; i ) { ini->WriteInteger("Data", IntToStr(i), i); } delete ini; // 從 ini 檔案讀取資料 AnsiString szPath=ExtractFilePath(Application->ExeName); TIniFile *ini=new TIniFile(szPath "Data.ini"); for(int i=0; i<10; i ) { Memo1->Lines->Add(IntToStr(ini->ReadInteger("Data", IntToStr(i), 0))); } delete ini; |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
phoenix_csie 您好: 看看是不是少引用了 IniFiles.hpp 表頭檔?如果不是的話,請將該訊息的前面那個部分也列出來,這樣子才能知道是那一個物件 "is not a member of 'TForm1'"? 讀寫 ini 檔案時,必須要告知寫入或讀取的區段名稱 (如果要使用區段的話),同時所給予的項目名稱必須在同一個區段內是唯一的,您貼上來的範例使用了迴圈,而回圈內的讀寫對象都是 "Data",這樣子會在寫入時僅寫入一筆項目名稱為 "Data" 的資料,以您的範例而言,您應該要將 "Data" 改成 "Data" IntToStr(i) 這個樣子,才能寫入名稱為 "Data0"~"Data9" 的十筆資料,讀取的時候也是一樣的,查看一下 Help 中有關 WriteInteger....等的說明時,都有範例可以參考,先試試看吧。 7 天天敲鍵盤 v 時時按滑鼠 8
|
phoenix_csie
一般會員 發表:6 回覆:15 積分:4 註冊:2005-10-11 發送簡訊給我 |
版主你好:
我的錯誤訊息是(你說的部分我有注意到,所以沒有miss表頭檔。)
[C Error] Unit1.cpp(23): E2316 '_fastcall TForm1::FormClose(TObject *,TCloseAction &)' is not a member of 'TForm1'
我練習的是這篇文章中的程式碼
http://delphi.ktop.com.tw/topic.php?topic_id=36220 剛剛研究一番後`,是不是讀取部分是寫在TForm1部分
而寫入則是自己再加一個FormClose的函式(不知道是不是這樣稱呼?)上去? 各個函式名稱我都有爬文知道了,只不過不知道怎樣寫在BCB內
因為我之前都是在放元件後,將程式碼寫在原件內。
TiniFile是不可視元件,我就不知道要如何開始,
所以先問一個基本的Edit內讀寫的方法。 謝謝版主熱心回答
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
phoenix_csie 您好: 您大概是直接複製範例上的程式碼,或者是自己鍵入的 FormClose 程序,但是未在 .h 檔內加上對應的宣告,所以編譯時會產生錯誤。 您設定過可視元件的屬性吧?那個 Object Inspector 視窗有兩個頁籤,Properties 是設定元件屬性的,而 Events 則是設定元件的事件,您描述的 FormClose 是 Form 的 OnClose 事件,因此您應該透過前述的視窗,在 Form1 的 OnClose 事件欄裡點擊滑鼠左鍵兩次,讓 BCB 自動產生該事件處理程序的宣告與框架,然後再將處理程序鍵入到那個框架內去,這樣子就不會產生您所描述的那種錯誤了。 7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/10/11 18:12:54
|
phoenix_csie
一般會員 發表:6 回覆:15 積分:4 註冊:2005-10-11 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
phoenix_csie 您好: 我用一個簡單的範例來做說明好了:
// 寫入 void __fastcall TForm1::Button1Click(TObject *Sender) { TIniFile *QueryFile = new TIniFile("c:\\test.ini"); // 設定處理對象為 c:\test.ini AnsiString QuerySection = "Edit1"; // 要寫入的區段 (Section) 名稱 // 將 Edit1->Text 的內容寫到以 content 為名的項目去 QueryFile->WriteString(QuerySection, "content", Edit1->Text); delete QueryFile; QueryFile = NULL; } // 讀取 void __fastcall TForm1::Button2Click(TObject *Sender) { TIniFile *QueryFile = new TIniFile("c:\\test.ini"); // 設定處理對象為 c:\test.ini AnsiString QuerySection = "Edit1"; // 要讀取的區段 (Section) 名稱 // 讀取名稱為 content 的項目,並將讀取到的內容設給 Edit1,如果沒有找到指定的項目,則將 Edit1 設為空字串 Edit1->Text = QueryFile->ReadString(QuerySection, "content", ""); delete QueryFile; QueryFile = NULL; }7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/10/11 22:17:50 |
phoenix_csie
一般會員 發表:6 回覆:15 積分:4 註冊:2005-10-11 發送簡訊給我 |
|
無故障
一般會員 發表:17 回覆:69 積分:17 註冊:2004-03-11 發送簡訊給我 |
插花一下
// 寫入 void __fastcall TForm1::Button1Click(TObject *Sender) { TIniFile *QueryFile = new TIniFile(OpenDialog1->FileName) ;//讀取也修改一下就可以了 // TIniFile *QueryFile = new TIniFile("c:\\test.ini"); // 設定處理對象為 c:\test.ini AnsiString QuerySection = "Edit1"; // 要寫入的區段 (Section) 名稱 // 將 Edit1->Text 的內容寫到以 content 為名的項目去 QueryFile->WriteString(QuerySection, "content", Edit1->Text); delete QueryFile; QueryFile = NULL; }練習! 練習! 再練習!
------
嘿嘿嘿 |
phoenix_csie
一般會員 發表:6 回覆:15 積分:4 註冊:2005-10-11 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
phoenix_csie 您好: 試試看下列敘述是否為您要的動作?
// 寫入 void __fastcall TForm1::Button1Click(TObject *Sender) { if (SaveDialog1->Execute()) { TIniFile *QueryFile = new TIniFile(SaveDialog1->FileName); AnsiString QuerySection = "Edit1"; QueryFile->WriteString(QuerySection, "content", Edit1->Text); delete QueryFile; QueryFile = NULL; } } // 讀取 void __fastcall TForm1::Button2Click(TObject *Sender) { if (OpenDialog1->Execute()) { TIniFile *QueryFile = new TIniFile(OpenDialog1->FileName); AnsiString QuerySection = "Edit1"; Edit1->Text = QueryFile->ReadString(QuerySection, "content", ""); delete QueryFile; QueryFile = NULL; } }7 天天敲鍵盤 v 時時按滑鼠 8 |
Miki-lion
中階會員 發表:90 回覆:180 積分:54 註冊:2005-04-24 發送簡訊給我 |
我也插花一下~~不過我是問問題..>< 這幾天我也在弄這個~~不過我需要的是ChenckBox和RadioButton 卻出現
[C++ Error] Unit1.cpp(30): E2451 Undefined symbol 'ChenckBox1'
[C++ Error] Unit1.cpp(33): E2109 Not an allowed type
這些問題 想麻煩有經驗的前輩幫忙一下~~謝謝
if (SaveDialog1->Execute()) { TIniFile *QueryFile = new TIniFile(SaveDialog1->FileName); AnsiString QuerySection = "ChenckBox1"; ChenckBox1->Checked = QueryFile->WriteBool(QuerySection, "content", ChenckBox1->Checked); AnsiString QuerySection2 = "RadioButton1"; RadioButton1->Checked = QueryFile->WriteBool(QuerySection2, "content", RadioButton1->Checked); delete QueryFile; QueryFile = NULL; } |
Miki-lion
中階會員 發表:90 回覆:180 積分:54 註冊:2005-04-24 發送簡訊給我 |
自己解出來了....><
if (SaveDialog1->Execute()) { TIniFile *QueryFile = new TIniFile(SaveDialog1->FileName); AnsiString QuerySection2 = "ChenckBox1"; QueryFile->WriteBool(QuerySection2, "content", CheckBox1->Checked); AnsiString QuerySection3 = "RadioButton1"; QueryFile->WriteBool(QuerySection3, "content", RadioButton1->Checked); delete QueryFile; QueryFile = NULL; }發表人 - miki-lion 於 2005/10/14 13:06:24 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
Miki-lion
中階會員 發表:90 回覆:180 積分:54 註冊:2005-04-24 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
phoenix_csie
一般會員 發表:6 回覆:15 積分:4 註冊:2005-10-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |