Referencias de matrices - página 5

 
TheXpert:
Oh, mis rótulas para ti, sólo estoy empezando a cavar.

Bueno, aquí está mi excavadora, la hice un poco más cómoda.

#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:
También debería haber una bandera AsSeries y posiblemente algunas otras.
¡О! Correcto, en el tercer byte el cuarto bit (cuenta atrás desde el bit cero)
 

Por cierto, cometí un error en el mío -- en la importación todos los longs deberían ser reemplazados por ints.

Pregunta: ¿por qué necesita una segunda dimensión?

Otra pregunta... ¿de dónde viene el 76? el tamaño de su estructura es 52 + 2*8 = 68;

 
TheXpert:

Por cierto, cometí un error en el mío -- en la importación todos los longs deberían ser reemplazados por ints.

Pregunta: ¿por qué necesita una segunda dimensión?

Yo hice la tercera ;)) -- para estudiar la reacción de la estructura.


Otra pregunta... ¿de dónde viene el 76? el tamaño de su estructura es 52 + 2*8 = 68;

Ah, estaba mirando el tamaño real de la estructura del array, así que he añadido algunos datos conocidos (
store.reserved = 0xEEEEEEEEEEEEEEEE;
) y lo escaneó.
 

Más sugerencias para posibles banderas -- estática/dinámica e indicador/convencional

static\dynamic está fuera, static como "long x[5]" no se escribe como una estructura, sino como un array de registros.

 

Eso es todo por ahora:

// 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; //
};

Eso debería ser suficiente para la idea, así que podemos intentar ponerla en práctica.

He terminado por hoy.

 

No sientas pena por tu tiempo...

MQ debería hacer este tipo de cosas, de lo contrario todo este trabajo se puede ir al garete, por ejemplo, con el lanzamiento de una nueva compilación.

Sería mucho más lógico justificar la necesidad de esas mejoras de forma inteligente y con conocimiento de causa, entonces quizás MQ lo haría "por encargo".

 
komposter:

Sería mucho más lógico justificar la necesidad de esas modificaciones de forma inteligente y con conocimiento de causa, entonces quizás MQ lo haría "por encargo".

Sin duda, MQ no ganará dinero, así que les corresponde hacerlo a ellos mismos.
 
sergeev:
Definitivamente, MQ no va a ganar dinero, así que tienes que hacerlo tú mismo.
Para empezar, hay que entender el ¿POR QUÉ? ¿Y de qué servirá?

Ah, y gracias a los implicados, gracias a los posts de este hilo he descubierto que la descripción de la ayuda está desfasada...
 
mql5:

Sí y gracias a los implicados, gracias a los posts en este hilo he descubierto que la descripción en la ayuda está desfasada...

Ilyas, así es como hay que llamarlo :))

Deduzco que todo el equipo de MK se agarraba la barriga mientras veía la búsqueda. Y la referencia estaba tan cerca... :)

Pero se puede ver que el foro son verdaderos profesionales que sólo pueden reconstruir la estructura y entender qué es responsable de qué.


PS

¿la ayuda ya estaba corregida?