也许对某些人有用:
或者,您也可以制作 RAM 磁盘并在其中放置文件。RAM 磁盘是位于计算机 RAM 中的虚拟磁盘。
我使用这样的软件来创建 RAM 磁盘http://ramdisk.nm.ru/ramdiskent-rus.htm
我希望这一切都能写入 MQL,这样就可以在没有 dll 的情况下使用了。
谢谢 Alex,很酷的东西。
如果所有这些都能在 MQL 中实现就好了,这样就可以在没有 dll 的情况下使用。
不幸的是,整个问题在于一个函数--MapViewOfFile。 它返回一个指针,所以你不能在 MQL 中直接使用它......你不能把一个指针带到一个数组。
所有其他函数(只有 4 个--CreateFileMapping、OpenFileMapping、UnmapViewOfFile、CloseHandle)都可以调用。
,但只有MapViewOfFile 无法直接从 MQL 中使用映射创建一个功能齐全的工作。很遗憾,我也很想在没有自写 DLL 的情况下完成它。
不幸的是,整个问题在于一个函数 -MapViewOfFile。 它返回一个指针,因此不能直接在 MQL 中使用......不能将指针指向数组。
所有其他函数(只有 4 个--CreateFileMapping、OpenFileMapping、UnmapViewOfFile、CloseHandle)都可以调用。
,但只有MapViewOfFile 无法直接从 MQL 中创建一个功能齐全的映射工作。很遗憾,我自己也很想不使用自写的 DLL。
其实不是你的问题,我是想告诉 MQ 开发人员,这个问题是老问题了,显然需要解决。
ZY 我写过通过事件将指针传递到数组的函数,目的类似(但在一个 MT 中),但没有 DLL 也不行,尽管 DLL 中的函数是单行的。
其实不是你,这是给 MQ 开发人员的信息,问题是老问题了,显然需要解决。
是的,需要就是需要。
你有没有做过创建转换器函数的工作?
例如,某些 dll 函数返回一个指针,所以我们有 int(4)。在大多数情况下,这将是一个指向某个结构的指针。
接下来的任务就是从这个结构中提取数据。我们知道结构的大小,因此可以先将指针转换为指向字符数组的指针。
这里有一个问题--如何进行重新分配? 如何作弊? 也许可以通过一个中间的 dll 函数,在其中传递指针,然后它将返回这个字符数组?
,然后通过简单的 = 将这个字符数组转移到我们的结构体中。
下面是 dll 中这种函数的一个变体
void Convert(char *_in, char *_out) { _out=_in; }
从 mql 调用时是这样的
// 例如,api 函数返回一个指向数据结构的指针 int ptr=ФункцияИзАпи(); // 指针指向 ДанныеИзАпи struct ДанныеИзАпи { // api 的数据结构 16 个字节 }; struct refData { char byte[16]; // 相同结构的图像,也 = 16 字节 }; refData ref; Convert(ptr, ref.byte); // 翻译数组指针 ДанныеИзАпи data=ref; // 通过简单复制来填充结构的字段
PS
虽然我想到了 memcpy,但它也是通过指针复制的。 我现在应该试试。
又一块对 MK 有利的石头。
为什么要做这样的手脚?
难道他们自己的节目真的能毁了他们的脸吗?
其实,这并不是针对你的,这是给 MQ 开发人员的信息,这个问题是老问题了,显然需要解决。
总之,一切都很好,问题已经解决,不使用自写动态链接库的 MQL5 圣经已经成功制作并经过测试。
我已将其交付出版:)
内存映射:
作者: o_O