两个MT4终端之间的数据交换? - 页 3

 
granit77:
goldtrader: 当一个EA打开一个文件进行写入时,当文件还在打开时,另一个EA打开(或试图打开)同一个文件进行读取,这不是一个冲突情况吗?
我,作为一个对科学的力量充满信心的人,发现这种情况有点戏剧性。你可以读到十个人那么多,但要写可以用检查,禁止标志等。 这是个纯粹的技术问题,不是一个障碍。这是一个纯粹的技术问题,并不是一个障碍,来自任何地方的文件早就可以使用API进行读写。有趣的是,还有其他在终端之间传输信息的方法,这些方法以前没有使用过。例如,以Windows环境变量的形式传输信息。
我同意。我还想让数据传输不需要文件,这样更快、更可靠。但我认为还没有人对此有什么意见,这就是为什么每个人都固执于通过文件转移((((。
 
goldtrader:
重力001

这没有问题,因为一个EA一直在向文件写入,另一个EA一直在从文件中读取,发生的顺序并不重要。为了检查数据的相关性,我使用了本地时间,即每100毫秒写一次报价,然后通过本地时间检查它们的相关性。


当一个EA打开一个文件进行写入时,当它还在打开时,另一个EA打开(或试图打开)同一个文件进行读取,这不是一种冲突情况吗?
不,这并不冲突,因为你可以在任何时候读一个文件,即使它是为写而开放的。但如果同一个文件在同一时间被打开写入两次,那么就会出现冲突。
 
zhuki:

供参考,如果你点击terminal.exe 4次,同一终端的两个副本将被打开,而且路径必须相同。

我试着点击,没有用。你确定它有用吗?
 
gravity001:

我还想做没有文件的数据传输,它更快、更可靠。但我认为到目前为止,没有人对此有什么意见,这就是为什么所有的人都停留在通过文件传输的阶段((())。

是否有可能为两个应用程序保留有访问权的内存空间?

这也是一种明显的冲突,激起了这种错误。




0009 0x0009 无效的内存管理地址

0998 0x03E6 无效的内存地址访问尝试

其中一个应用程序将试图访问一个它没有访问权限的内存地址


 
D500_Rised:
问题是 这样的:问题一开始就没有得到解决。

我也想在没有文件的情况下传递数据,这样更快、更可靠。但我认为还没有人对此有什么意见,这就是为什么每个人都固执于通过文件转移((((。

是否有可能为两个应用程序保留有访问权的内存空间?

这也是一种明显的冲突,激起了这种错误。




0009 0x0009 无效的内存管理地址

0998 0x03E6 无效的内存地址访问尝试

其中一个应用程序将试图访问一个它没有访问权限的内存地址


也许你不能,我不太清楚。在这里,在这个主题https://forum.mql4.com/ru/3393,他们写了关于GlobalAddAtom。如果我没有理解错的话,可以在没有文件的情况下传递变量,也就是通过内存。但我不知道怎么做((())。


你还举了一个例子,你能告诉我你是如何尝试做的吗?

 

哦,我脑子里又冒出了一个想法--Windows剪贴板是可以被应用程序读写访问的,没有任何内存地址的限制!我想这是一个很好的例子。

Буфер обмена (clipboard)- набор функций и сообщений, который делает возможным передачу данных в прикладные программы, разработанные при помощи Microsoft ® Win32 ® прикладного программного интерфейса (API). Поскольку все прикладные программы имеют доступ к буферу обмена, данные могут быть легко перемещаемы между приложениями или внутри прикладной программы.

但这里是车轮上的另一个小棍子。

剪贴板是由用户控制的。窗口应该只在响应用户的命令时向剪贴板发送数据或从剪贴板发送数据。 窗口不应该在没有通知用户的情况下使用剪贴板发送数据。

所以,只有API :^(

 
D500_Rised:

哦,我脑子里又冒出了一个想法。 Windows剪贴板是可以被应用程序读写访问的,没有任何内存地址限制。

剪贴板 是一组功能和信息,使其有可能向使用Microsoft® Win32® 应用编程接口 API)设计的应用程序传输数据。因为所有的应用程序都可以访问剪贴板,数据可以很容易地在应用程序之间或在一个应用程序内移动。

但这里是车轮上的另一个小棍子。

剪贴板是由用户控制的。窗口只应根据用户的命令将数据传入或传出剪贴板。窗口不应使用剪贴板来传输数据而不通知用户。

所以,只有API :^(

似乎很清楚,但如何实现它,你能更具体一些吗?
 

要么自己学习Win 32 API,要么找一个愿意接受这项工作的编码员。这里没有太多的选择。

但在我看来,这个系统不值得花费。

 
gravity001:
zhuki:

仅供参考,如果你点击terminal.exe 4次,同一终端的两份拷贝就会打开,而且路径应该是一样的。

我试着点击,没有用。你确定它对你有用吗?
我又试了一次,它打开了同一个终端的两个副本。 这不是我自己想出来的,这是一个众所周知的事实。
 
下面是讨论https://forum.mql4.com/ru/9244#49606