如果一个文件夹包含未关闭的文件,则不删除该文件夹 - 页 3

 
Реter Konow:
据我所知,如果没有使用文件函数(如FileWrite())对文件进行修改,就没有必要关闭它。FileOpen()函数只是创建一个新的文件,这个操作不需要关闭文件(这个函数的文档,也没有说创建后需要关闭文件)。

Oy-lee!讲故事的人https://docs.mql4.com/ru/files/fileopen


//-- 在 "文件沙盒 "中工作的正确方法
ResetLastError()。
filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV)。
如果(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(),EnumToString(ENUM_TIMEFRAMES(_Period))。
FileClose(filehandle)。
Print("FileOpen OK")。
}
否则Pri

FileOpen - Файловые операции - Справочник MQL4
FileOpen - Файловые операции - Справочник MQL4
  • docs.mql4.com
FileOpen - Файловые операции - Справочник MQL4
 
Rashid Umarov:

Oy-lee!讲故事的人https://docs.mql4.com/ru/files/fileopen


与我所说的有什么矛盾呢?

我说,-

Retag Konow:
据我所知,如果没有使用文件函数(如FileWrite())对文件进行修改,就没有必要关闭它。FileOpen()函数只是创建一个新的文件,这个操作不需要关闭文件(这个函数的文档也没有说创建后需要关闭文件)。


但在你的例子中,FileWrite()函数是在文件被创建后立即使用的。然后你使用 FileClose(filehandle)。


另外,在上面的脚本代码中,我添加了一个明确的封闭,但这并没有解决任何问题......。

 
Реter Konow:

正是这样。当我试图删除一个已经包含子文件夹和文件的文件夹时,我会先删除文件。只留下子文件夹。我尝试用FolderClean()清理它们,然后调用FolderDelete()。然而,结果是那些空的子文件夹被很好地删除了,但如果子文件夹里面有更多的子文件夹,则不会被删除。之后,我试图从MetaEditor的文件导航器中手动删除这些文件夹,但终端并没有删除它们,而是弹出这个窗口。

我点击 "继续",同意修改,但文件夹仍然没有被删除。在完全关闭并重新打开终端后,应该被删除的文件夹要么自己消失,要么不消失,但你可以在没有上述窗口的情况下立即手动删除它们。

这种奇怪的事情...

我见过很多次这样的事情。我发现,在某些时候,Files文件夹及其所有子文件夹和文件都具有只读属性。手动取消选择这个标志并没有帮助。但重新启动终端总是有帮助的。无法让它播放(没有尝试),所以没有向SD报告。

 
A100:

该错误(5022)仅在你设置了FILE_COMMON

它清除了该文件夹,但没有删除它

这个标志不需要设置,否则文件会在共享文件夹中被搜索到,而错误说目录名是错误的。

文件路径

"\\MQL4\\Files";

不需要设置这个标志。所以一切都很正确。

 
fxsaber:

我已经看到这种事情发生了很多次。我发现,在某些时候,Files文件夹以及所有子文件夹和文件都具有只读属性。手动取消选择这个标志并没有帮助。但重新启动终端总是有帮助的。无法让它播放(没有尝试),所以没有向SD报告。

谢谢。很高兴我不是唯一面临这个问题的人。我需要解决这个问题(没有它就无法完成对文件导航器 的使用)。我已经写信给Servicedeck。但我也在这里写,以备不时之需。结果是没有白费功夫)。
 
Реter Konow:

这个标志不需要设置,否则文件将在共享文件夹中被搜索到,并且错误的说目录名是错误的。

在有和没有FILE_COMMON 的情况下--都能工作(最初在检查时,我忘了在最后一个if中加上这个标志)。对于FILE_COMMON,它被暗示为在所有操作中都存在。

 
Реter Konow:

这个标志不需要设置,否则文件会在公共文件夹中被搜索到,而且错误说目录名是错误的。

文件的路径

不需要设置这个标志。所以一切都很正确。

这很奇怪。我注意到了MQL4文件夹的路径,并将代码重新编译为.ex4,奇怪的是,代码工作起来没有错误。我删除了文件的关闭,得到了

2017.08.28 17:36:18.525 Demo_FolderDelete EURUSD.e,H4: Не удалось удалить папку nonempty. Код ошибки=5025
2017.08.28 17:36:16.985 Demo_FolderDelete EURUSD.e,H4: Не удалось очистить папку nonempty. Код ошибки=5026

然后在没有修正的情况下,我在mt5上运行它,奇怪的是,提到的MQL4文件夹被忽略了。文件夹和文件已经在MQL5文件夹中创建。从这里开始,一切都与MT4相同。一个未关闭的文件没有被删除...

2017.08.28 17:50:45.328 Demo_FolderDelete (CADJPY,H4)   Не удалось очистить папку nonempty. Код ошибки=5025
2017.08.28 17:50:47.958 Demo_FolderDelete (CADJPY,H4)   Не удалось удалить папку nonempty. Код ошибки=5024
 
仆人回答说。他们说,文件创建后必须关闭。但我关闭它,问题仍然存在......唉......(
 
Alexey Viktorov:

这一切都很奇怪。我注意到了MQL4文件夹的路径,并将代码重新编译为.ex4,奇怪的是,代码工作起来没有错误。删除了文件关闭,得到了

然后在没有修正的情况下,我在mt5上运行它,奇怪的是,提到的MQL4文件夹被忽略了。该文件夹和文件已在MQL5文件夹中创建。从这里开始,一切都与MT4相同。一个未关闭的文件没有被删除...

我的意思是,你用一个脚本做了一个专家顾问,并试图运行它?

 
Реter Konow:
但我关闭它,问题仍然存在......唉......(
并到处尝试FILE_COMMON