FileOpen()讀取檔案失敗?有高手知道原因嗎?

Kevin Z
72
Kevin Z  
int handle = FileOpen("test.csv",FILE_READ |FILE_WRITE|FILE_CSV,",");
上面這段程序可以正常在MQL5\Files 資料夾內建立一個新檔案

然後我在MQL5\Files確定有test.csv檔案後, 再用下面這段程序測試,想讀取檔案
int handle = FileOpen("test.csv",FILE_READ |FILE_CSV,",");

結果handle卻回傳-1, 請問為何會讀取失敗?還有請高手指導一下感
Ziheng Zhuang
34308
Ziheng Zhuang  

调用 GetLastError(), 检查下错误代码。

可能这个文档test.csv处于打开状态,必须关了它。

Tiecheng Fu
1088
Tiecheng Fu  
Kevin Z:
int handle = FileOpen("test.csv",FILE_READ |FILE_WRITE|FILE_CSV,",");
上面這段程序可以正常在MQL5\Files 資料夾內建立一個新檔案

然後我在MQL5\Files確定有test.csv檔案後, 再用下面這段程序測試,想讀取檔案
int handle = FileOpen("test.csv",FILE_READ |FILE_CSV,",");

結果handle卻回傳-1, 請問為何會讀取失敗?還有請高手指導一下感

 handle=FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_SHARE_WRITE|FILE_SHARE_READ,',');  供参考

Kevin Z
72
Kevin Z  

感謝您的回覆

(1) 我用GetLastError()查的代碼是5004

(2)您說要關檔我加上了FileClose()還是不行

但我發現一個奇怪的現象

      int handle = FileOpen("test.csv", FILE_WRITE|FILE_CSV,",");

      FileClose(handle);

      int handle2 = FileOpen("test.csv",FILE_READ |FILE_CSV,",");

      FileClose(handle2);

上面這段組合程序讀檔沒有問題 ,handle 和 handle2都是1

但是如果我只執行下面這段讀檔程序hande 卻回傳-1(確定有test.csv檔案存在)

      int handle2 = FileOpen("test.csv",FILE_READ |FILE_CSV,",");

      FileClose(handle2);

不知道問題出在那邊,還麻煩幫忙解惑一下感謝

Hung Wen Lin
830
Hung Wen Lin  

5004就是檔案打開錯誤

可能是已經開啟但是沒有關閉

用樓上大神的建議 把參數修改一下

handle=FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_SHARE_WRITE|FILE_SHARE_READ,','); 

這樣就可以避免唯寫或是唯讀的狀況

Kevin Z
72
Kevin Z  
謝謝各位 解決了