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

如何開啟檔案

答題得分者是:JerryKuo

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-09 12:26:42 IP:218.163.xxx.xxx 未訂閱
我程式中自動開啟了一個.txt檔 檔名與.exe 檔相同 請問,我該如何開啟這.txt檔呢? 我不知道程式會放在哪裡 所以是否能有以相對位置開啟的呢 開.txt檔是讀進一筆資料,以"r"開啟 請問我該如何做呢?
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-09 20:18:05 IP:218.164.xxx.xxx 未訂閱
引言: 我程式中自動開啟了一個.txt檔 檔名與.exe 檔相同 請問,我該如何開啟這.txt檔呢? 我不知道程式會放在哪裡 所以是否能有以相對位置開啟的呢 開.txt檔是讀進一筆資料,以"r"開啟 請問我該如何做呢?
其實你可以試著用OpenDialog元件來開檔案

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-10 09:30:13 IP:218.163.xxx.xxx 未訂閱
我想用的方法不是以元件開 我再描述一次,其實第一篇寫的蠻模糊的 ^^" 我寫了個程式他會自動產生一個.txt檔 程式路徑在哪,.txt檔就會在哪產生 但是我這個程式又想去讀到.txt檔裡的文字 不知道有什麼語法可以用 例如 1. 先知道到程式路徑 2. 抓到程式的檔名 3. open 在 程式路徑 中的 程式檔名.txt 4. 以 fscanf 讀入裡面文字於 Edit1->Text 上 也許有更簡便的方法可以完成 感謝回答,謝謝

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-10 11:20:28 IP:218.163.xxx.xxx 未訂閱
這是我的程式碼,雖然我希望可以不指定路徑而開啟 不過我還是先從可以指定的路徑先做起 但是無法開啟檔案,不曉得為什麼,請前輩指導 void __fastcall TForm1::Button1Click(TObject *Sender) { // 這是可以讀入檔案的部份,確定沒有問題 FILE *fp; String fpfile=ChangeFileExt( Application->ExeName, ".log" ); if ((fp=fopen(fpfile.c_str(), "w")) == NULL) fclose(fp); else fprintf( fp,"%s\n",Edit1->Text); fclose(fp); } //--------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { // 這部份就沒有辦法順利讀出,會在按的時候出現錯誤 String s1; FILE *fp; fp=fopen("C:\Documents and Settings\qpzm\桌面\test\Project1.log","r"); fscanf(fp,"%s",s1); fclose(fp); 謝謝

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-10 11:20:42 IP:218.163.xxx.xxx 未訂閱
這是我的程式碼,雖然我希望可以不指定路徑而開啟 不過我還是先從可以指定的路徑先做起 但是無法開啟檔案,不曉得為什麼,請前輩指導 void __fastcall TForm1::Button1Click(TObject *Sender) { // 這是可以讀入檔案的部份,確定沒有問題 FILE *fp; String fpfile=ChangeFileExt( Application->ExeName, ".log" ); if ((fp=fopen(fpfile.c_str(), "w")) == NULL) fclose(fp); else fprintf( fp,"%s\n",Edit1->Text); fclose(fp); } //--------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { // 這部份就沒有辦法順利讀出,會在按的時候出現錯誤 String s1; FILE *fp; fp=fopen("C:\Documents and Settings\qpzm\桌面\test\Project1.log","r"); fscanf(fp,"%s",s1); fclose(fp); 謝謝
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-10 13:34:10 IP:140.135.xxx.xxx 未訂閱
流您好:      您要讀的副檔名是什麼呢??   怎麼從*.txt變成.log< > 順心< > ~我也是在學習的階段,回答的不好請您多多見諒與指教~ 發表人 - taishyang 於 2003/08/10 13:34:47

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-10 13:49:30 IP:218.163.xxx.xxx 未訂閱
請問一下,這樣會不會有什麼差別呢 只要檔名有,副檔名有,應該都可開啟吧? 我手邊有本 C 語言的書,他開啟的是 .dat 檔 其實我是節錄出某段來修改,所以才會變成是.log檔 一時忘了修改回 .txt 請問你一下讀取的部份該怎麼實現呢 我手邊的書也都是指個路徑便能讀到 不過我這樣寫卻出錯,懇請指正 謝謝
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-10 14:00:36 IP:140.135.xxx.xxx 未訂閱
流您好:
引言: 請問一下,這樣會不會有什麼差別呢 只要檔名有,副檔名有,應該都可開啟吧? 我手邊有本 C 語言的書,他開啟的是 .dat 檔 其實我是節錄出某段來修改,所以才會變成是.log檔 一時忘了修改回 .txt 請問你一下讀取的部份該怎麼實現呢 我手邊的書也都是指個路徑便能讀到 不過我這樣寫卻出錯,懇請指正 謝謝
因為處理的方式會有差異(對我來說) 假如確定是*.txt,那您可以用Memo或者是TStringList對文字檔做處理 相當的方便,下面是範例程式 假設1.txt的內容是 1 2 3 ... 9 [用Memo]
 
Memo1->Lines->LoadFromFile("1.txt");
Memo1->Lines->Add(10);
Memo1->Lines->SaveToFile("2.txt");
[用TStringList]
 
TStringList*sl=new TStringList();
sl->LoadFromFile("1.txt");
sl->Add(11);
sl->SaveToFile("2.txt");
delete sl;
順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-11 10:00:27 IP:61.230.xxx.xxx 未訂閱
你好:    
引言: 這是我的程式碼,雖然我希望可以不指定路徑而開啟 不過我還是先從可以指定的路徑先做起 但是無法開啟檔案,不曉得為什麼,請前輩指導 void __fastcall TForm1::Button1Click(TObject *Sender) { // 這是可以讀入檔案的部份,確定沒有問題 FILE *fp; String fpfile=ChangeFileExt( Application->ExeName, ".log" ); if ((fp=fopen(fpfile.c_str(), "w")) == NULL) fclose(fp); else fprintf( fp,"%s\n",Edit1->Text); fclose(fp); } //--------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { // 這部份就沒有辦法順利讀出,會在按的時候出現錯誤 String s1; FILE *fp; fp=fopen("C:\Documents and Settings\qpzm\桌面\test\Project1.log","r"); 目錄應該是改成 C:\\Documents and Settings\\qpzm\\桌面\\test\\Project1.log fscanf(fp,"%s",s1); s1是String物件,不是字串,你搞錯了,要改成 fscanf(fp,"%s",s1.c_str()); fclose(fp); 謝謝
參考看看吧

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-08-11 13:27:49 IP:211.23.xxx.xxx 未訂閱
雖然我已經解決,但還是謝謝您的回答喔,給了我些概念 ^^ FILE *fp; String str; char fstr[20]; fp = fopen ("C:\\support\\take.txt","r"); while(!feof(fp)) { fscanf(fp,"%s",fstr); str = fstr; } fclose(fp); Edit1->Text = str ; 這是我參閱其他範例後修改的 code 正如您所言,的確是少了一條反斜線 "\" 而也從您的文章中得知讀出檔案的資料為字串格式 感謝回答!
系統時間:2024-05-06 6:37:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!