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

可以做ini檔欄位到.cpp檔的變數中嗎?

答題得分者是:RaynorPao
anderson8585
一般會員


發表:10
回覆:13
積分:4
註冊:2007-08-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-05 11:04:03 IP:210.68.xxx.xxx 訂閱
ini檔

[Number]
ID1 = 0003
ID2 = 0005
ID3 = 0020

可以依序讀進.cpp中嗎?

我們通常是使用
String a[0] = MyIni->ReadString(Number,ID1,0003);
String a[1] = MyIni->ReadString(Number,ID2,0005);
String a[2] = MyIni->ReadString(Number,ID3,0020);

如果不這樣做的話 還有什麼方法
因為考慮到資料量大的問題
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-05 14:34:54 IP:220.130.xxx.xxx 未訂閱
請參考以下的範例程式碼,自行修改

[code cpp]
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TIniFile *iniFile=new TIniFile(ExtractFilePath(Application->ExeName) "IniFile3.ini");
TStringList *slValues=new TStringList;
int i=0;

while(true)
{
AnsiString szValue=iniFile->ReadString("Number", "ID" IntToStr(i 1), "Nonce");
if(szValue=="Nonce") break;
slValues->Add(szValue);
i ;
}

// 以下這段程式碼只是用來確認資料(可不用)
for(int i=0; iCount; i )
{
ShowMessage(slValues->Strings[i]);
}

// ...對資料做運算...
delete slValues;
delete iniFile;
}
[/code]
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
anderson8585
一般會員


發表:10
回覆:13
積分:4
註冊:2007-08-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-03-06 14:24:26 IP:210.68.xxx.xxx 訂閱
1.目前我還在試    有什麼辦法取得[Number]中  共有3筆資料嗎?

2.若我有2個欄位

ini檔

[Class]
Number08 = a123456
Number02 = b556666

[Number08]
ID8=a123456-1
ID4=a123456-6
ID9=a123456-4

[Number02]
ID7=b556666-4
ID4=b556666-3
ID2=b556666-5


以上如果說我要先取得[class]Number08=a123456 再跑去取[Number08]中依序的3個值要怎麼寫
不知道讀ini檔限制很多 也不大清楚ini檔中bcb的指令運用
以上有辦法這樣取得嗎? 我再寫看看 >"<~


===================引 用 anderson8585 文 章===================
ini檔

[Number]
ID1 = 0003
ID2 = 0005
ID3 = 0020

可以依序讀進.cpp中嗎?

我們通常是使用
String a[0] = MyIni->ReadString(Number,ID1,0003);
String a[1] = MyIni->ReadString(Number,ID2,0005);
String a[2] = MyIni->ReadString(Number,ID3,0020);

如果不這樣做的話 還有什麼方法
因為考慮到資料量大的問題
wolfling
初階會員


發表:5
回覆:20
積分:25
註冊:2007-10-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-03-06 14:36:26 IP:61.222.xxx.xxx 訂閱
照上面的方法 先用StringList 紀錄所有Section 依你的範例class number08 number02
取得class的data時 依序比較 一樣的話 在ReadString(data,"ID" IntToStr(i 1), "Nonce") (請引用上面的方法)
這樣應該可以

-------------------------------
[Class]
Number08 = a123456
Number02 = b556666

[Number08]
ID8=a123456-1
ID4=a123456-6
ID9=a123456-4

[Number02]
ID7=b556666-4
ID4=b556666-3
ID2=b556666-5
------
work hard bring success
anderson8585
一般會員


發表:10
回覆:13
積分:4
註冊:2007-08-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-03-06 17:31:59 IP:210.68.xxx.xxx 訂閱
那有什麼辦法取得[Number]中  共有3筆資料嗎?
怎麼去count算出來

顯示Number=3
wolfling
初階會員


發表:5
回覆:20
積分:25
註冊:2007-10-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-03-06 17:35:53 IP:61.222.xxx.xxx 訂閱
是不是有方法我不是很確定
不過沒有方法的情形下 你可以讀取[Number]到下一個[Number]間有多少非空字元的資料
也是一個方法

===================引 用 anderson8585 文 章===================
那有什麼辦法取得[Number]中 共有3筆資料嗎?
怎麼去count算出來

顯示Number=3
------
work hard bring success
anderson8585
一般會員


發表:10
回覆:13
積分:4
註冊:2007-08-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-03-06 17:49:27 IP:210.68.xxx.xxx 訂閱
        我有試了一下  但是是顯示ini所有非空白筆數

TStringList *L = new TStringList();
L->LoadFromFile()
ShowMessage(L->Count);
delete L;

那您說的[number]到下一個[number]非空白的筆數 該怎麼寫
因為我對讀ini的command還不熟 正在慢慢吸收 看範例中學習
anderson8585
一般會員


發表:10
回覆:13
積分:4
註冊:2007-08-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-03-06 18:02:48 IP:210.68.xxx.xxx 訂閱
計數的部份我是這樣寫的

用while(true)如果cpp變數值=Nonce
我就break

在無窮迴圈中計數

不知道還有什麼建議的
wolfling
初階會員


發表:5
回覆:20
積分:25
註冊:2007-10-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-03-07 09:18:46 IP:61.222.xxx.xxx 訂閱

===================引 用 anderson8585 文 章===================
我有試了一下 但是是顯示ini所有非空白筆數

TStringList *L = new TStringList();
L->LoadFromFile()
[code cpp]
//start m
int count=0;
bool start = false;
for(int i=0 ;i Count ;i ){
if(L->Strings[i]=="[number]")
{
start = true;
for(int j=i 1;j< L->Count ;j ){
if(L->Strings[j]!="[number] " || L->String[j] != "")
start ;
else break;
}
}
}
ShowMessage(count); //
//End m
[/code]
// ShowMessage(L->Count);
delete L;

那您說的[number]到下一個[number]非空白的筆數 該怎麼寫
因為我對讀ini的command還不熟 正在慢慢吸收 看範例中學習

我覺得 如果你在ini檔裡面多下點功夫
程式就不會那麼麻煩了 你可以看看ini應該如何去編排 會比較好
是我的話 不會弄得那麼麻煩..太累人了
------
work hard bring success
編輯記錄
wolfling 重新編輯於 2008-03-07 09:22:53, 註解 無‧
wolfling 重新編輯於 2008-03-07 10:03:20, 註解 無‧
wolfling 重新編輯於 2008-03-07 10:08:30, 註解 無‧
daldal
高階會員


發表:6
回覆:102
積分:226
註冊:2007-06-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-03-10 18:44:37 IP:220.130.xxx.xxx 未訂閱
連續取用、寫入的程式碼請參考上面RaynorPao版主的Code

其中若是要得知有多少行
可以使用ReadSection達成

[code cpp]
TStringList* tmp = new TStringList;
MyIni->ReadSection("Number",tmp); //Number類別放入tmp
tmp->Count; //查詢Number類別有多少筆資料

//做你想要做的事

delete tmp;
[/code]

編輯記錄
daldal 重新編輯於 2008-03-11 20:18:17, 註解 打錯字, 拍謝‧
anderson8585
一般會員


發表:10
回覆:13
積分:4
註冊:2007-08-27

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-03-11 13:45:37 IP:210.68.xxx.xxx 訂閱
我再試試看 努力中
系統時間:2024-05-03 10:16:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!