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

寫入TMemIniFile 資料沒有及時更新

答題得分者是:brook
small7011
一般會員


發表:19
回覆:34
積分:10
註冊:2007-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-04-23 10:08:59 IP:211.20.xxx.xxx 訂閱
假設我原始INI設 UP =100 LO=10,而我要修改INI的數值假設修改為UP =50 LO=20寫入之後INI檔案裡面確實也有更改成UP =50 LO=20但是為什麼我DaSp->UP和DaSp->LO讀到的還是原先數值 UP =100 LO=10
[code cpp]
//---------------------------------------------------------------------------
void __fastcall TForm1::ButestClick(TObject *Sender)
{
if(StrToInt(EdtM->Text) <=DaSp->UP && StrToInt(EdtM->Text) >= DaSp->LO)
lblShow->Caption="符合";
else
lblShow->Caption="不符合";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtnModifyClick(TObject *Sender)
{
int iUP,iLO;
TMemIniFile *iniSpec = new TMemIniFile(ChangeFileExt( Application->ExeName, ".INI" ));
iUP=StrToInt(EdtUP->Text);
iLO=StrToInt(EdtLO->Text);
//-------------spec----------------------//
iniSpec->WriteInteger("Spec","UP",iUP);
iniSpec->WriteInteger("Spec","LO",iLO);
iniSpec->UpdateFile();
delete iniSpec;
iniSpec=NULL;
}
//---------------------------------------------------------------------------
下面是寫在DataModule底下
void __fastcall TDaSp::Readini(bool bCreate)
{
TMemIniFile *iniSpec = new TMemIniFile(ChangeFileExt( Application->ExeName, ".INI" ));

if(bCreate==true)
{
//-------------spec----------------------//
UP=iniSpec->ReadInteger("Spec","UP",-1);
LO=iniSpec->ReadInteger("Spec","LO",-1);

}
delete iniSpec;
iniSpec=NULL;

}
[/code]
------
lee
編輯記錄
small7011 重新編輯於 2008-04-24 09:29:38, 註解 無‧
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-04-24 07:35:47 IP:118.168.xxx.xxx 訂閱
1.我測的結果是會更新,也讀得到.
2.只要用F4鍵和F8鍵追踪一下讀取的那一段應就可以找出問題.
small7011
一般會員


發表:19
回覆:34
積分:10
註冊:2007-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-04-24 09:48:42 IP:211.20.xxx.xxx 訂閱
我還是有同樣的問題,我在詳細說明一次,ini假設原始是UP=100  LO=10  
step1:我在EdtM輸入一個在上下限數字,讓程式去判斷是否符合.
step2:假設我要修改ini UP=50 LO=20,我去看INI檔確實有改變成 UP=50 LO=20
step3:但是這時候我ButestClick函數裡頭DaSp->UP和DaSp->LO所獨到的數值還是舊的UP=100 LO=10

step4:然而我重新Run過程式之後 那數值則會修改成UP=50 LO=20


請教大大有什麼方法可以在不用重新Run程式變可即使更新DaSp->UP和DaSp->LO所讀到的數值
------
lee
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-04-25 07:32:48 IP:118.168.xxx.xxx 訂閱
我用bcb5確實可以更新不需重啓程式.

[code cpp]
請在此區域輸入程式碼
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TMemIniFile *iniSpec = new TMemIniFile(ChangeFileExt( Application->ExeName, ".INI" ));
int iUP=StrToInt(EdtUP->Text);
//-------------spec----------------------//
iniSpec->WriteInteger("Spec","UP",iUP);
iniSpec->UpdateFile();
delete iniSpec;
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
TMemIniFile *iniSpec = new TMemIniFile(ChangeFileExt( Application->ExeName, ".INI" ));
int UP=iniSpec->ReadInteger("Spec","UP",-1);
delete iniSpec;

Edit2->Text = UP;
}
//---------------------------------------------------------------------------
[/code]
small7011
一般會員


發表:19
回覆:34
積分:10
註冊:2007-07-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-04-25 09:48:27 IP:211.20.xxx.xxx 訂閱
謝謝大大指導,我試過您的程式,確實可以即使更新 ,我自己再仔細檢查看看。
------
lee
系統時間:2024-04-23 15:01:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!