問個關於開啟檔案的問題 |
答題得分者是:erosme
|
leeli
初階會員 發表:57 回覆:55 積分:27 註冊:2003-06-25 發送簡訊給我 |
Dears:
小弟我寫了一個程式。當程式開始執行的時候,會去開啟設定檔讀取設定參數。如果檔案不存在,則自己建立設定檔。程式碼如下
< class="code"> // Button1Click(Sender);
char name[64];
if( (fp=fopen( ".\\setup.ini","r")) == NULL );
{
reSaveFile();
}
fp=fopen( ".\\setup.ini","r");
if(!feof(fp))
{
fscanf(fp,"%s/n",name);
if ( strstr(name, "LSSServerPort="))
{
AnsiString dId=AnsiString(name);
Edit1->Text=(dId.c_str() 14);
}
else reSaveFile();
fscanf(fp,"%s/n",name);
if ( strstr(name, "LGSServerOpen="))
{
int i=StrToInt((AnsiString(name)).c_str() 14);
if(i==1)
{
CheckBox1->Checked=true;
Button1Click(Sender);
}
}
else reSaveFile();
fscanf(fp,"%s/n",name);
if ( strstr(name, "ReOpen="))
{
int i=StrToInt((AnsiString(name)).c_str() 7);
if(i==1)
{
CheckBox2->Checked=true;
Button2Click(Sender);
}
}
else reSaveFile();
fscanf(fp,"%s/n",name);
if ( strstr(name, "ServerClientPort="))
{
AnsiString dId=AnsiString(name);
Edit2->Text=(dId.c_str() 17);
}
else reSaveFile();
fscanf(fp,"%s/n",name);
if ( strstr(name, "ServerClient="))
{
int i=StrToInt((AnsiString(name)).c_str() 13);
if(i==1)
{
CheckBox3->Checked=true;
}
}
else reSaveFile();
fscanf(fp,"%s/n",name);
if ( strstr(name, "TurnIP="))
{
AnsiString dId=AnsiString(name);
Edit4->Text=(dId.c_str() 7);
}
else reSaveFile();
fscanf(fp,"%s/n",name);
if ( strstr(name, "TurnPort="))
{
AnsiString dId=AnsiString(name);
Edit3->Text=(dId.c_str() 9);
}
else reSaveFile();
fscanf(fp,"%s/n",name);
if ( strstr(name, "TurnOpen="))
{
int i=StrToInt((AnsiString(name)).c_str() 9);
if(i==1)
{
CheckBox4->Checked=true;
}
}
else reSaveFile();
fscanf(fp,"%s/n",name);
if ( strstr(name, "UDPPort="))
{
AnsiString dId=AnsiString(name);
Edit9->Text=(dId.c_str() 8);
}
else reSaveFile();
fscanf(fp,"%s/n",name);
if ( strstr(name, "UDPOpen="))
{
int i=StrToInt((AnsiString(name)).c_str() 8);
if(i==1)
{
CheckBox5->Checked=true;
// Button3Click(Sender);
}
}
}
fclose(fp);
/* else
{
}
*/
}
可是,現在不管有沒有檔案存在,程式一開始都會自己先建立設定檔。請問各位大大,我的程式是哪裡錯了ㄋㄟ? 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。
對於各位的大力協助,感激不盡!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡! |
erosme
初階會員 發表:5 回覆:44 積分:29 註冊:2002-12-23 發送簡訊給我 |
Dear leeli, 你的程式有兩個小問題,
就是紅色部分
if( (fp=fopen( ".\\setup.ini","r")) == NULL ); { reSaveFile(); } fp=fopen( ".\\setup.ini","r"); 由於你在 if( (fp=fopen( ".\\setup.ini","r")) == NULL ); 已經將檔案開啟,若之後又開啟時可能會出現 error . 其次if( (fp=fopen( ".\\setup.ini","r")) == NULL ); 最後面你多加了一個 ";" 分號 . 導致if 判斷是否為 false or true,它都會執行 reSaveFile() 副程式. 所以正確的寫法如下: if( (fp=fopen( ".\\setup.ini","r")) == NULL ) { reSaveFile(); } if(!feof(fp)) { ....... }發表人 - taishyang 於 2004/02/08 18:44:43 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |