资料库: 无需 DLL 的文件映射 - 页 4

 
sergeev:
将它们作为 sizeof(<Type>)*<Number_Elements> 的长变量处理,一切都会解决:)
所以只需要这个类来传输指针?我还以为可以同时使用数组呢:(
 
baramantan:
所以这个类只能用来传输指针?我还以为可以同时使用数组呢 :(
你知道自己在问什么吗?:)
 
sergeev:
将它们作为 sizeof(<Type>)*<Number_Elements> 的长变量处理,一切都会解决:)

void OnStart()
{
CMemMapFile hmem;
int err=hmem.Open("Local\\\\test",111,modeCreate);

int data[];
ArrayResize(data,50);

err=hmem.Write(data,ArraySize(data)*sizeof(int));

ArrayInitialize(data,0);
hmem.Seek(0,SEEK_SET);
err=hmem.Read(data,ArraySize(data)*sizeof(int) );


hmem.Close();
} 我做对了吗

我做对了吗?如果不对,哪里出错了?

 

baramantan:

我做得对吗?
问 Debug,他百分百知道。
 
sergeev:
去问 debag,他知道得一清二楚。

你为什么非要用箭头移动来回复我的帖子?

你能举例说明如何传递数组 int 或 double 吗?

 

如果连调试器都没有,你怎么检查? 你在学校是否习惯于在没有电脑的黑板上学习计算机科学?

如果你想了解细节和示例,请阅读 MSDN。


一般来说,人都是厚颜无耻的。他们已经把所有东西都转移到 MQL 中,并用注释把它们都嚼碎了,
,所以让他们也为他们的 slivators 写函数:)结果会很奇怪。

;)

 
sergeev:

如果连调试器都没有,你怎么检查? 你在学校是否习惯于在没有电脑的黑板上学习计算机科学?

如果你想了解细节和示例,请阅读 MSDN。


一般来说,人都是厚颜无耻的。他们已经把所有东西都转移到 MQL 中,并用注释把它们都嚼碎了,
,所以让他们也为他们的 slivators 写函数:)结果会很奇怪。

;)

现在我不明白,如果你们不想回答我的问题,为什么还要在我的帖子里提问?我很震惊,编辑人员!
 

好吧,我来回答我自己的问题。我不得不拿起这个半成品。

这个类不能处理 int 和 double 数组,原因很简单。

声明的函数不能接受 int 或 double 类型的数组。该类只能处理 uchar " virtual int Write(const uchar &buf[],int sz); // write the specified number of bytes into memory " 。

我根据自己的需要修改了配方,现将修改后的内容发布出来,你只能传递 int 数组。 如果作者没有修改完他的创作,我稍后会发布我自己的创作。

附加的文件:
MemMapLib.mqh  17 kb
MemMap.mq5  2 kb
 
baramantan:

我来回答我自己的问题。我必须做一些调查

所以我实现了我的目标:)

这个类不能接受 int 和 double 数组,原因很简单。
声明的函数不能接受 int 或 double 类型的数组。

这是显而易见的事实,它接受的是 uchar,而不是 <some_needed_type>。

同样,你也可以要求这个 "半成品 "保存一个包含字符串的结构数组。跺跺脚--为什么作者没有预见到 "我需要的数据格式"。

但你得到的是一个通用函数。小于一个字节的数据无处分割。这就是存储的原因。

因为任何数据类型 都可以转换成 uchar 数组(读取字节),所以对于这样一个类来说,它是最通用的。

我根据自己的需要拼凑修改了配方,我把我得到的结果公布出来,你只能传递 int 数组。

以前是用 uchar,现在是用 int。

是的。进步:)
 
sergeev:

所以我实现了我的目标:)

这是显而易见的事实。它接受的是 uchar,而不是 <some_necessary_type>。

同样,你也可以要求这个 "半成品 "保存一个包含字符串的结构数组。跺跺脚--为什么作者没有预见到 "我需要的数据格式"。

但你得到的是一个通用函数。小于一个字节的数据无处分割。这就是存储的原因。

因为任何数据类型 都可以转换成 uchar 数组(读取字节),所以它是最通用的数据类型

以前是 uchar,现在是 int。

。进步 :))

当然,我不是超级程序员。uchar 不能通用,因为它限制了用户,即: uchar 只适用于正值:uchar只适用于正值。最小值为 0,最大值为 255。

任何超出 uchar 值的数据都将等于 uchar 的最大值或最小值。

根据我所说的,我一开始就问 "如何传递 int 或 double"。我不明白你的意思,头儿。