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

BCB使用fopen(),只有在FormCreate裡才有效

答題得分者是:BON362
shiuan0610
一般會員


發表:15
回覆:13
積分:5
註冊:2007-05-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-01 14:17:44 IP:61.56.xxx.xxx 訂閱
我在BCB要開啟一文字檔
本來在某Button裡開檔的:
ifp=fopen("test.txt","w");

結果一直無法開啟,ifp總是NULL
後改成在FormCreate,就可以成功開啟了

但我因為某些原因想在Button裡開檔
請問真的沒辦法嗎?
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-01 15:00:58 IP:122.124.xxx.xxx 未訂閱
請把程式碼PO上來讓前輩們看看問題在哪邊
PO程式碼的方式請參考版規說明

BON362
一般會員


發表:3
回覆:16
積分:13
註冊:2007-05-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-10-01 21:13:35 IP:218.168.xxx.xxx 訂閱
在button 也是可以用fopen呀
------
加油吧 C
shiuan0610
一般會員


發表:15
回覆:13
積分:5
註冊:2007-05-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-10-03 11:20:07 IP:61.56.xxx.xxx 訂閱
我知道問題出在哪了
我在button開檔是直接以下面兩行程式碼

[code cpp]
char* filename="Objects.txt";
ifp= fopen(filename,"r");
[/code]

Objects.txt我是和主程式存在同一資料夾
原本上面那兩行程式碼就能順利讀取
但在開檔之前我會用OpenDialog去開別的檔
OpenDialog似乎會自動改變預設路徑
所以再執行前面那兩行程式碼
ifp就變成NULL了
當然,如果在FormCreate裡搶先執行ifp= fopen(filename,"r");
自然能成功的開啟儲存在主程式資料夾內的"Objects.txt"了
解決方法就是要對filemane指定目前主程式的資料夾(內有"Objects.txt")

在版上搜尋了一下
只找到了ExtractFilePath(Application->ExeName)可以取得目前主程式路徑
不過這行只有取得路徑而已

請問如何辦到:
filename=ExtractFilePath(Application->ExeName) "Objects.txt"
(當然上面這一行BCB編譯器不會接受)

另外,請問如何設定打開OpenDialog時的初始路徑
我希望每次開OpenDialog時,初始的地方都一樣

謝謝各位的回應
編輯記錄
shiuan0610 重新編輯於 2007-10-03 11:21:18, 註解 無‧
shiuan0610 重新編輯於 2007-10-03 11:23:00, 註解 無‧
shiuan0610 重新編輯於 2007-10-03 11:24:09, 註解 無‧
BON362
一般會員


發表:3
回覆:16
積分:13
註冊:2007-05-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-10-03 20:24:20 IP:61.216.xxx.xxx 訂閱
AnsiString filename=".\"+"Objects.txt";
ifp= fopen(filename.c_str(),"r");
這樣應該可以
------
加油吧 C
編輯記錄
BON362 重新編輯於 2007-10-03 20:31:14, 註解 無‧
系統時間:2024-05-02 21:15:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!