ini 內容如何變成變數名稱 |
答題得分者是:jow
|
solder
一般會員 發表:1 回覆:2 積分:0 註冊:2007-08-23 發送簡訊給我 |
諸位先進好
小弟目前正在試著熟悉C Builder的語法 有下列問題請教 1 在用到 TIniFile 這個物件時, 發現它並不能像Delphi一樣有count 的功能 那麼, 小弟要如何計算 ini 內的筆數呢 ? 2 倘若小弟的ini檔, 有一value為 abc 那麼, 在程式中, String CheckINI; String a=IniFile->ReadString("Gap", CheckINI,"nothing"); a="abc" 那小弟想偷懶, 把另一變數名稱也叫做abc int abc=234; 但是 ShowMessage(a); 並不會等於 ShowMessage(abc); 要怎麼樣設定, 才能使 ShowMessage(a); 的值等於 Showmessage(abc); 呢 ? 謝謝先進
------
This is Jackal. |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
(1)
INI檔是文字檔 TStringList *L = new TStringList(); L->LoadFromFile("你的INI檔名"); ///////L->Count<---你要的筆數 delete L; (2) 字串: AnsiString a="abc" 整數: int abc=234; 如何讓 Compiler 了解你的用法, 讓兩者產生關聯? 要不就是自己要處理, 要不就另外再找一個有支援這 樣用法的工具. 以下簡單以TStringList 的 Key-Values pair 的特性 讓兩者(AnsiString a, int abc) 產生一點點關聯. [code cpp] //--------------------------------------------------------------------------- #ifndef fMainH #define fMainH //--------------------------------------------------------------------------- #include #include #include #include <Forms.hpp><br />//--------------------------------------------------------------------------- class TKeyValue : public TPersistent { protected: AnsiString FileName; TStringList *L; public: __fastcall TKeyValue(AnsiString FileName); __fastcall ~TKeyValue(); AnsiString __fastcall ReadString(AnsiString Key, AnsiString Default); int __fastcall ReadInteger(AnsiString Key, int Default); void __fastcall WriteString(AnsiString Key, AnsiString value); void __fastcall WriteInteger(AnsiString Key, int value); }; //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: TButton *Button1; TListBox *ListBox1; void __fastcall Button1Click(TObject *Sender); private: public: __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif [code cpp] //--------------------------------------------------------------------------- #include #pragma hdrstop #include "fMain.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TKeyValue::TKeyValue(AnsiString FileName): TPersistent() { this->FileName = FileName; L = new TStringList(); if(FileExists(FileName)) L->LoadFromFile(FileName); } //--------------------------------------------------------------------------- __fastcall TKeyValue::~TKeyValue() { L->SaveToFile(FileName); delete L; } //--------------------------------------------------------------------------- AnsiString __fastcall TKeyValue::ReadString(AnsiString Key, AnsiString Default) { if(Key[1]=='&'){ Key = Key.SubString(2,Key.Length()-1); Key = ReadString(Key, Default); } if(L->Values[Key]=="") L->Values[Key] = Default; return L->Values[Key]; } //--------------------------------------------------------------------------- int __fastcall TKeyValue::ReadInteger(AnsiString Key, int Default) { if(Key[1]=='&'){ Key = Key.SubString(2,Key.Length()-1); Key = ReadString(Key, Default); } return StrToInt(ReadString(Key, IntToStr(Default))); } //--------------------------------------------------------------------------- void __fastcall TKeyValue::WriteString(AnsiString Key, AnsiString value) { L->Values[Key] = value; } //--------------------------------------------------------------------------- void __fastcall TKeyValue::WriteInteger(AnsiString Key, int value) { L->Values[Key] = IntToStr(value); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ListBox1->Items->Clear(); AnsiString FileName = "D:\\KEY_VALUE.TXT"; TKeyValue *L = new TKeyValue(FileName); try{ AnsiString a = L->ReadString("a", "abc"); int abc = L->ReadInteger(a, 0); int jkl = L->ReadInteger("&a", 0); int xyz = L->ReadInteger("abc", 0); ListBox1->Items->Add(a); ListBox1->Items->Add(abc); ListBox1->Items->Add(jkl); ListBox1->Items->Add(xyz); abc = random(MaxInt); L->WriteInteger(a, abc); } __finally{ delete L; } } //--------------------------------------------------------------------------- [/code] 最後查看一下, D:\KEY_VALUE.TXT 的內容 ^..^ |
solder
一般會員 發表:1 回覆:2 積分:0 註冊:2007-08-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |