如果一个文件夹包含未关闭的文件,则不删除该文件夹 - 页 7 12345678 新评论 Реter Konow 2017.08.28 22:12 #61 明天我将尝试做一个能完全重现这个问题的脚本。 所以人们不会说我在这里做 "虚构")。非常感谢大家愿意帮助和协助解决这个问题。)) A100 2017.08.28 22:44 #62 有一个像这样的浮动错误(描述了序列,并附上了一个库.ex5文件)。记录这种事情是很困难的 关于交易、自动交易系统和策略测试的论坛 虫子,虫子,问题 A100, 2016.08.04 00:05 专家顾问打开文件时出错。比如说,如果。1.删除 "一些不相关的代码"(见下文)2. 或删除 ::Sleep(1000)没有错误//Test.mq5 #import "Test001.ex5" string f( string file ); #import string __Period() { return StringSubstr( EnumToString((ENUM_TIMEFRAMES)Period()), 7 ); } void OnInit() { Print( Symbol(), ",", __Period(), ", результат=", f( "test.txt" )); } 行动的顺序。1.创建一个新的配置文件(如 "测试")。2.打开两个新的图表,将Test.ex5专家顾问附在两个图表上(见图)。4.选择任何其他现有的配置文件5.选择 "测试 "配置文件结果。而Test001.mq5看起来像这样。//Test001.mq5 #property library //--- //здесь некий код не имеющий отношения к делу //--- string f( string file ) export { ::ResetLastError(); int hFile = ::FileOpen( file, FILE_READ | FILE_SHARE_READ | FILE_TXT | FILE_ANSI | FILE_COMMON ); if ( hFile == INVALID_HANDLE ) return ::StringFormat( "Error(%d): Не был открыт файл: %s", ::GetLastError(), file ); ::Sleep( 1000 ); ::FileClose( hFile ); return "OK"; } 现在用所附的库文件试了一下:结果是一样的(测试文件由两位专家分别打开,如果同时打开,其中一位专家报告错误)。2017.08.28 23:40:43.623 测试(EURUSD,M15) EURUSD,M15, 结果=OK 2017.08.28 23:40:52.389 测试(GBPUSD,M15) GBPUSD,M15, 结果=OK2017.08.28 23:41:14.387 测试(GBPUSD,M15) GBPUSD,M15, result=Error(5004): File was not opened: test.txt 2017.08.28 23:41:15.484 测试(EURUSD,M15) EURUSD,M15, result=OK A folder is not 错误、漏洞、问题 FOREX - Trends, forecasts A100 2017.08.28 23:05 #63 发现申请号#1530548,但没有评论--可能已经被纠正了。如果没有,请再次审查 Alexey Viktorov 2017.08.29 08:55 #64 Реter Konow:该文件被 我的应用程序(文件导航器)打开,在另一个文件夹中被覆盖。当文件被打开 阅读时,我们得到文件句柄。标签是Konow。覆盖后,我需要关闭文件,但我不能--(没有句柄),只能擦除文件。 要写到另一个文件,我需要另一个文件的句柄,所以把它存储在另一个变量中是有意义的。写入一个新文件后,两个文件的句柄被存储在两个变量中,两个文件都用这些句柄关闭。标签 Konow:没有句柄,因为该文件的创建时间和创建者都不清楚。 如果该文件是由无名氏和无名氏创建的,那么它很可能没有被任何应用程序使用。如果你出于某种目的打开了文件,那么你已经有了一个由 FileOpen 函数获得的句柄 ,你应该在擦除文件夹之前关闭它。 科诺标签。也就是说,该文件存在于Files文件夹内,可以复制到另一个文件夹,之后再删除。当把一个文件从一个可访问的程序复制到一个mql程序时,文件的句柄是绝对不必要的。 Reg Konow: 但你在复制后不能关闭该文件。没有手柄。复制文件后,文件没有打开,不需要关闭它。科诺标签。这可能就是为什么用已删除的文件进一步擦除FolderClean(),却没有效果。这绝对是一个错误。RetagKonow: 问题:我怎样才能在MQL程序中获得这个文件的句柄?从上述情况来看,这个问题没有意义。文件句柄只在打开一个文件时获得,以确定文件 指针的位置FileTell 和FileSeek 从哪里读取或写入,强制将数据转储到磁盘FileFlush,当然还有关闭文件以释放它,让其他应用程序对其进行操作。很意外地,我发现了你的问题所在。在实验期间,在资源管理器或其他文件管理器中打开一个文件夹,以监测文件的创建和删除。而一旦文件被删除,文件夹就会保持繁忙,无法删除。其结果是 2017.08.29 09:42:15.657 Demo_FolderDelete (CADJPY,H4) Не удалось удалить папку nonempty. Код ошибки=5024 但是,在尝试删除一个文件夹未果后,这个文件夹仍然很忙,唉,这是一个事实。现在,这将是向SD申请的主题。ps;唉,我在实验过程中也搞砸了。写入文件后,将数据重置到磁盘,试图用记事本打开,但得到的答复是......(图)取消了打开的尝试,忘记了,这就是保留文件夹,不让它被删除。摘要:在mql文件方面没有问题。 Rashid Umarov 2017.08.29 09:37 #65 Alexey Viktorov:完全是意外,我已经发现了你的问题所在。在实验期间,在资源管理器或其他文件管理器中打开一个文件夹,以监测文件的创建和删除。而在删除文件后,该文件夹仍然被占用,无法删除。其结果是 2017.08.29 09:42:15.657 Demo_FolderDelete (CADJPY,H4) Не удалось удалить папку nonempty. Код ошибки=5024 但是,在尝试删除一个文件夹未果后,这个文件夹仍然很忙,唉,这是一个事实。 现在将向员工代表报告这一情况。我在完全不同的情况下遇到过这种行为--也是保持一个文件夹的删除状态,导致程序/脚本/SVN等无法删除该文件夹。 而且它总是以同样的方式处理--通过手动拆解该文件夹。所以这几乎不是一个终端或编辑器的问题。 Alexey Viktorov 2017.08.29 09:42 #66 Rashid Umarov:我在完全不同的情况下遇到过这种行为--也是保持一个文件夹的开放性以备删除,结果是程序/脚本/SVN等无法删除该文件夹。 而且它总是以同样的方式处理--通过手动拆解给定的文件夹。所以这几乎不是一个终端或编辑器的问题。我稍后补充了一下我的帖子。 关于交易、自动交易系统和测试交易策略的论坛 如果一个文件夹里有未关闭的文件,则不删除该文件夹 Alexey Viktorov, 2017.08.29 08:55ps;唉,我在实验过程中也搞砸了。写入文件后,将数据重置到磁盘,试图用记事本打开它,但得到的答复是......(图)取消打开尝试,我忘了,这就是保留文件夹,不允许删除它。摘要:在mql文件方面没有问题。奇怪的是,你引用了我的帖子,却没有这个补遗。 Rashid Umarov 2017.08.29 09:52 #67 Alexey Viktorov:我稍后补充了我的帖子。奇怪的是,你在引用我的帖子时没有加上这一点。只是为了让你对SD的答复有所准备。 Alexey Viktorov 2017.08.29 10:12 #68 Rashid Umarov:只是让你对SD的反应有所准备。 因此,如果我理解了问题的原因,为什么要从SD中写出垃圾?我只是没有大声说,我拒绝写......我想这对每个人来说都是显而易见的。 Alexey Viktorov 2017.08.29 10:15 #69 Rashid Umarov:我在完全不同的情况下遇到过这种行为--也是保持一个文件夹的开放性以备删除,导致程序/脚本/SVN等无法删除该文件夹。 而解决方法总是一样的--手动拆解该文件夹。所以这几乎不是一个终端或编辑器的问题。在 文件管理器中 打开一个文件夹 ,而不是一个文件,并不影响mql对其进行删除。 Реter Konow 2017.08.29 10:18 #70 Alexey Viktorov:1.在打开 一个文件进行阅读时 ,获得文件句柄。2.要写到另一个文件,我们需要另一个文件句柄,所以把它存储在另一个变量中是合理的。写入新文件后,两个文件的句柄被存储在两个变量中,两个文件根据这些句柄被关闭。3.如果该文件是由不知名的人在什么时候创建的,有一个非常好的机会,该文件没有被任何应用程序占用。如果你是为了某种目的而打开文件,你已经有一个 FileOpen 句柄 ,应该在清除文件夹之前关闭它。 4.当把一个文件从一个可用的程序复制到mql时,文件柄是绝对不必要的。 5.一旦一个文件被复制,该文件就不会被打开,没有必要关闭它。1 该句柄只需要用于FileClose函数。我没有打开该文件。它是在我之前创造的。我只复制它并擦掉它。我无法关闭它,因为没有手柄。2.要复制(FileCopy),要移动(FileMove),不需要文件句柄。请参考文件。3.如果我用FileOpen函数打开一个由别人创建的文件,我不会得到它的句柄。完全不知道我会得到哪个手柄。这可能是他的,也可能是相当不同的。我试图得到别人的文件的句柄,这样我就可以在复制操作后关闭FileClose它。这并不奏效。4.复印时,不需要手柄。它的复制没有任何问题。但该文件会自动打开进行复制。此外,我不能用FileClose关闭它,因为没有句柄。这可能就是为什么FolderClean在删除复制的文件后不工作的原因。5.你怎么知道复制后的文件没有打开?它没有被FileOpen函数明确打开,但它被复制了,这意味着它被打开了。因此,它在复制后,甚至在擦除后仍保持开放。可能是这样。 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
明天我将尝试做一个能完全重现这个问题的脚本。
所以人们不会说我在这里做 "虚构")。
非常感谢大家愿意帮助和协助解决这个问题。))
有一个像这样的浮动错误(描述了序列,并附上了一个库.ex5文件)。记录这种事情是很困难的
关于交易、自动交易系统和策略测试的论坛
虫子,虫子,问题
A100, 2016.08.04 00:05
专家顾问打开文件时出错。比如说,如果。
1.删除 "一些不相关的代码"(见下文)
2. 或删除 ::Sleep(1000)
没有错误
行动的顺序。
1.创建一个新的配置文件(如 "测试")。
2.打开两个新的图表,将Test.ex5专家顾问附在两个图表上(见图)。
4.选择任何其他现有的配置文件
5.选择 "测试 "配置文件
结果。
而Test001.mq5看起来像这样。
现在用所附的库文件试了一下:结果是一样的(测试文件由两位专家分别打开,如果同时打开,其中一位专家报告错误)。
2017.08.28 23:40:43.623 测试(EURUSD,M15) EURUSD,M15, 结果=OK
2017.08.28 23:40:52.389 测试(GBPUSD,M15) GBPUSD,M15, 结果=OK
2017.08.28 23:41:14.387 测试(GBPUSD,M15) GBPUSD,M15, result=Error(5004): File was not opened: test.txt
2017.08.28 23:41:15.484 测试(EURUSD,M15) EURUSD,M15, result=OK
发现申请号#1530548,但没有评论--可能已经被纠正了。如果没有,请再次审查
Реter Konow:
该文件被 我的应用程序(文件导航器)打开,在另一个文件夹中被覆盖。
当文件被打开 阅读时,我们得到文件句柄。
标签是Konow。
覆盖后,我需要关闭文件,但我不能--(没有句柄),只能擦除文件。
要写到另一个文件,我需要另一个文件的句柄,所以把它存储在另一个变量中是有意义的。写入一个新文件后,两个文件的句柄被存储在两个变量中,两个文件都用这些句柄关闭。
标签 Konow:
没有句柄,因为该文件的创建时间和创建者都不清楚。
如果该文件是由无名氏和无名氏创建的,那么它很可能没有被任何应用程序使用。如果你出于某种目的打开了文件,那么你已经有了一个由 FileOpen 函数获得的句柄 ,你应该在擦除文件夹之前关闭它。
科诺标签。
也就是说,该文件存在于Files文件夹内,可以复制到另一个文件夹,之后再删除。
当把一个文件从一个可访问的程序复制到一个mql程序时,文件的句柄是绝对不必要的。
Reg Konow:
但你在复制后不能关闭该文件。没有手柄。复制文件后,文件没有打开,不需要关闭它。
科诺标签。
这可能就是为什么用已删除的文件进一步擦除FolderClean(),却没有效果。
这绝对是一个错误。
RetagKonow:
问题:我怎样才能在MQL程序中获得这个文件的句柄?从上述情况来看,这个问题没有意义。文件句柄只在打开一个文件时获得,以确定文件 指针的位置FileTell 和FileSeek 从哪里读取或写入,强制将数据转储到磁盘FileFlush,当然还有关闭文件以释放它,让其他应用程序对其进行操作。
很意外地,我发现了你的问题所在。
在实验期间,在资源管理器或其他文件管理器中打开一个文件夹,以监测文件的创建和删除。而一旦文件被删除,文件夹就会保持繁忙,无法删除。其结果是
但是,在尝试删除一个文件夹未果后,这个文件夹仍然很忙,唉,这是一个事实。现在,这将是向SD申请的主题。
ps;唉,我在实验过程中也搞砸了。写入文件后,将数据重置到磁盘,试图用记事本打开,但得到的答复是......(图)取消了打开的尝试,忘记了,这就是保留文件夹,不让它被删除。
摘要:在mql文件方面没有问题。
Alexey Viktorov:
完全是意外,我已经发现了你的问题所在。
在实验期间,在资源管理器或其他文件管理器中打开一个文件夹,以监测文件的创建和删除。而在删除文件后,该文件夹仍然被占用,无法删除。其结果是
但是,在尝试删除一个文件夹未果后,这个文件夹仍然很忙,唉,这是一个事实。 现在将向员工代表报告这一情况。
我在完全不同的情况下遇到过这种行为--也是保持一个文件夹的删除状态,导致程序/脚本/SVN等无法删除该文件夹。
而且它总是以同样的方式处理--通过手动拆解该文件夹。所以这几乎不是一个终端或编辑器的问题。
我在完全不同的情况下遇到过这种行为--也是保持一个文件夹的开放性以备删除,结果是程序/脚本/SVN等无法删除该文件夹。
而且它总是以同样的方式处理--通过手动拆解给定的文件夹。所以这几乎不是一个终端或编辑器的问题。
我稍后补充了一下我的帖子。
关于交易、自动交易系统和测试交易策略的论坛
如果一个文件夹里有未关闭的文件,则不删除该文件夹
Alexey Viktorov, 2017.08.29 08:55
ps;唉,我在实验过程中也搞砸了。写入文件后,将数据重置到磁盘,试图用记事本打开它,但得到的答复是......(图)取消打开尝试,我忘了,这就是保留文件夹,不允许删除它。
摘要:在mql文件方面没有问题。
奇怪的是,你引用了我的帖子,却没有这个补遗。
我稍后补充了我的帖子。
奇怪的是,你在引用我的帖子时没有加上这一点。
只是为了让你对SD的答复有所准备。
只是让你对SD的反应有所准备。
我在完全不同的情况下遇到过这种行为--也是保持一个文件夹的开放性以备删除,导致程序/脚本/SVN等无法删除该文件夹。
而解决方法总是一样的--手动拆解该文件夹。所以这几乎不是一个终端或编辑器的问题。
在 文件管理器中 打开一个文件夹 ,而不是一个文件,并不影响mql对其进行删除。
1.在打开 一个文件进行阅读时 ,获得文件句柄。
2.要写到另一个文件,我们需要另一个文件句柄,所以把它存储在另一个变量中是合理的。写入新文件后,两个文件的句柄被存储在两个变量中,两个文件根据这些句柄被关闭。
3.如果该文件是由不知名的人在什么时候创建的,有一个非常好的机会,该文件没有被任何应用程序占用。如果你是为了某种目的而打开文件,你已经有一个 FileOpen 句柄 ,应该在清除文件夹之前关闭它。
4.当把一个文件从一个可用的程序复制到mql时,文件柄是绝对不必要的。
5.一旦一个文件被复制,该文件就不会被打开,没有必要关闭它。
1 该句柄只需要用于FileClose函数。我没有打开该文件。它是在我之前创造的。我只复制它并擦掉它。我无法关闭它,因为没有手柄。
2.要复制(FileCopy),要移动(FileMove),不需要文件句柄。请参考文件。
3.如果我用FileOpen函数打开一个由别人创建的文件,我不会得到它的句柄。完全不知道我会得到哪个手柄。这可能是他的,也可能是相当不同的。我试图得到别人的文件的句柄,这样我就可以在复制操作后关闭FileClose它。这并不奏效。
4.复印时,不需要手柄。它的复制没有任何问题。但该文件会自动打开进行复制。此外,我不能用FileClose关闭它,因为没有句柄。这可能就是为什么FolderClean在删除复制的文件后不工作的原因。
5.你怎么知道复制后的文件没有打开?它没有被FileOpen函数明确打开,但它被复制了,这意味着它被打开了。因此,它在复制后,甚至在擦除后仍保持开放。可能是这样。