阵列引用 - 页 5

 
TheXpert:
哦,我的膝盖给你,我刚刚开始挖掘。

好了,这是我的挖掘机,我把它做得更舒服一些。

#import "msvcrt.dll"
  long memcpy(uchar &dst[], long &src, int cnt);
  long memcpy(uchar &dst[], int &src, int cnt);
#import

struct ArrayStore
{
   long offset;
   double x[][15];  // == 0x5800 0100 0800
   // long x[][15];  // == 0x5500 0100 0800
   // ulong x[][15];  // == 0x5600 0100 0800
   
   // int x[][15];  // == 0x5200 0100 04
   // uint x[][15];  // == 0x5300 0100 04
   // short x[][15]; // == 0x5000 0100 02
   // ushort x[][15]; // == 0x4F00 0100 02
   //char x[][15];  // == 0x4D00 0100 01
   //uchar x[][15];  // == 0x4E00 0100 01
   long reserved;

};

#define N 76
// sizeof(ArrayStore) == 60

void OnStart()
{
   ArrayStore store;
   ArrayResize(store.x, 0x11, 0x22);
   store.offset = 0;
   store.reserved = 0xEEEEEEEEEEEEEEEE;
   
   uchar array[N];
   ArrayInitialize(array, 0);
   
   memcpy(array, store.offset, N);
   Print("===== Start =====");
   for(int j=0;j<8;j++)
   {
    string s="";
    for (int i = 0; i < 8; i++)
     {
        s = s + ((i%4==0)?" : ": " ")+ StringFormat("%.2X", array[i+8*j+8]);
     }
     Print(s);
   }
   
ArrayResize (store.x , 31,3);    

   memcpy(array, store.offset, N);
   Print("=====  =====");
   for(int j=0;j<8;j++)
   {
    string s="";
    for (int i = 0; i < 8; i++)
     {
        s = s + ((i%4==0)?" : ": " ")+ StringFormat("%.2X", array[i+8*j+8]);
     }
     Print(s);
   }
   
ArrayResize (store.x , 0, 7);    

   memcpy(array, store.offset, N);
   Print("=====  =====");
   for(int j=0;j<8;j++)
   {
    string s="";
    for (int i = 0; i < 8; i++)
     {
        s = s + ((i%4==0)?" : ": " ")+ StringFormat("%.2X", array[i+8*j+8]);
     }
     Print(s);
   }
   Print("===== End =====");
}
 
TheXpert:
还应该有一个AsSeries标志,可能还有其他一些标志。
О!对,在第三个字节中,第四位(从零位开始倒数)。
 

顺便说一下,我在那里犯了一个错误 -- 在导入 时,所有的长条都应该用ints代替。

问题 -- 你为什么需要第二维度?

另一个问题 -- 76是怎么来的?你的结构尺寸是52+2*8=68。

 
TheXpert:

顺便说一下,我在那里犯了一个错误 -- 在导入时,所有的长条都应该用ints代替。

问题 -- 你为什么需要第二维度?

我做了第三个;)) -- 研究结构的反应。


另一个问题 -- 76是怎么来的?你的结构尺寸是52+2*8=68。

啊,我在看数组结构的真实大小,所以我加入了一些已知的数据(
store.reserved = 0xEEEEEEEEEEEEEEEE;
)并扫描了一遍。
 

关于可能的标志的更多建议--静态/动态 和指标/传统的标志

static/dynamic被淘汰了,像 "long x[5]"这样的静态不会被写成一个结构,而是写成一个数组的记录。

 

暂时就这些了。

// Array Struct
struct Array
{
   short type; // номер типа, вначале стандартные, потом пользовательские, каждому пользовательскому типу присваивается свой порядковый номер.
   short flags; // тут пока хз, есть только знание о флаге AsSeries
   int sizeoftype; // размер типа == sizeof(type)
   int dim1size; // размер 1-й рамерности
   int dim2size; // размер 1-й рамерности
   int dim3size; // размер 1-й рамерности
   int dim4size; // размер 1-й рамерности
   int reservedsize; // размер с учетом резерва (именно столько выделяется памяти)
   int ptr; // указатель
   int reserved1; //
   int reserved2; //
   int reserved3; //
   int reserved4; //
   int reserved5; //
};

这对这个想法来说应该是足够的,所以我们可以尝试实施它。

我今天就到此为止了。

 

不要为你的时间感到遗憾...

MQ应该做这样的事情,否则所有这些工作都可能付诸东流,比如说,随着新版本的发布。

聪明地证明这种改进的必要性会更符合逻辑,然后也许MQ会 "按部就班 "地做。

 
komposter:

如果能明智地证明这种修改的必要性,那就更符合逻辑了,那么也许MQ会 "按部就班 "地进行修改。

MQ肯定不会赚到任何钱,所以要靠他们自己来做。
 
sergeev:
MQ肯定赚不到钱,所以要靠你自己去赚。
首先,你需要了解为什么?这又有什么好处呢?

哦,感谢那些参与的人,由于这个主题的帖子,我发现帮助中的描述 已经过时了......。
 
mql5:

是的,感谢那些参与的人,由于这个主题的帖子,我发现帮助中的描述 已经过时了......。

伊利亚斯,应该这样称呼它 :))

我收集到整个MK团队在观看搜索时都抱着肚子。 而参考资料是如此接近......:)

但你可以看到,论坛是真正的专业人士,他们只能重建结构,了解什么负责什么。


PS

帮助已经被纠正了吗?