線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:956
推到 Plurk!
推到 Facebook!

問個關於開啟檔案的問題

答題得分者是:erosme
leeli
初階會員


發表:57
回覆:55
積分:27
註冊:2003-06-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-06 18:01:13 IP:61.30.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-08 13:22:09 IP:218.166.xxx.xxx 未訂閱
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
系統時間:2024-05-04 15:34:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!