在新的一行写到文件中 - 页 6

 
Aleksei Stepanenko:
谢尔盖有几个专家顾问在那里工作,有几行,所以它是一个数组。这就是为什么一切看起来都很难看。马克西姆-库兹涅佐夫建议SQL,这是这些EA相互交流的正确方式。

但是,这些线条被逐一读出,并以某种方式选择正确的线条。然后你就不需要一个数组了。

我也这么说过,但mql4不支持SQLite

 

我不是把图书馆插上了吗?或者不在那里,我忘了。

 
Aleksei Stepanenko:

我不是把图书馆插上了吗?或者不在那里,我忘了。

似乎不可能同时编辑一个文件,因为后来保存的是文件的版本。

例如,程序A打开文件 进行编辑,同时程序B也进行了编辑,然后程序A进行了修改并使用FileClose保存,然后程序B也进行了修改,但当程序C打开文件时,不会显示程序A的修改,而只显示程序B实施和保存的修改,因为程序B比程序A晚保存文件。

但这并不确定。

是否有这方面的任何信息?

 
用一个文件同时工作的程序是最邪恶的。当在一个文件上工作时,一个EA必须控制禁止其他EA读/写该文件。使用SQL或flag-全局变量 或flag-文件。否则就会出现难以理解的错误,难以发现。
 
Aleksei Stepanenko:
用一个文件同时工作的程序是最邪恶的。在使用该文件的时候,专家顾问应该控制禁止其他专家顾问读/写该文件。使用SQL或标志全局变量 或标志文件。否则就会出现难以理解的错误,难以发现。

这并不邪恶,有各种各样的任务,你只是必须考虑到某些特殊性。

显然,这些变化正是在FileClose 的时刻被保存的,在此之前没有人知道它们。

 
这取决于你。人类大脑的构造是这样的,新的想法很难出现。
 
EfremovSergey:

似乎不可能同时编辑一个文件,因为后来保存的是文件的版本。

例如,程序A打开文件 进行编辑,同时程序B也做了同样的事情,然后程序A做了修改并使用FileClose保存,然后程序B也做了同样的事情,但当程序C打开文件时,该文件将不包含程序A所做的修改,而只包含程序B所做并保存的修改,因为程序B比程序A晚保存该文件。

但这并不确定。

是否有这方面的任何信息?

设置起来很困难,但并非不可能。在保存之前,检查最后一次更改的时间与打开时的时间是否一致就可以了。我们读取 FILE_MODIFY_DATE,然后打开文件,进行修改,再次读取 FILE_MODIFY_DATE与之前的进行比较,如果没有人进行修改,则关闭文件并保存修改否则,我们就放弃修改......并再次打开它。像这样。

 
EfremovSergey:

并非那么邪恶,任务是不同的,但有某些特殊性需要考虑。

显然,这些变化是在FileClose的时候 保存的,在此之前没有人知道它们。

不是一个事实。

文件刷新

文件I/O缓冲区中的所有剩余数据重置到磁盘

void  FileFlush( 
   int  file_handle      // handle файла 
   );
 
Alexey Viktorov:

难以设置,但并非不可能。在书写之前,检查最后一次更改的时间与打开时的时间是否一致就可以了。例如,读取 FILE_MODIFY_DATE,然后打开文件,进行修改,再次读取 FILE_MODIFY_DATE,与之前的进行比较,如果没有人进行修改,就关闭文件,保存修改否则,我们就放弃修改......并再次打开它。像这样。

这和 "忙 "旗差不多(先到先得),只是要复杂一些,但这个想法很有趣,我喜欢,谢谢。

 
Alexey Viktorov:

不是一个事实。

文件刷新

将文件I/O缓冲区中的任何剩余数据重置到磁盘。

不知道这在FileClose 保存的背景下意味着什么。

原因: