Riferimenti alle matrici - pagina 5

 
TheXpert:
Oh, le mie rotule a te, ho appena iniziato a scavare.

Ecco la mia scavatrice, l'ho resa un po' più comoda.

#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:
Ci dovrebbe essere anche un flag AsSeries e forse altri.
О! Giusto, nel terzo byte il quarto bit (conta in giù dal bit zero)
 

A proposito, ho fatto un errore nel mio -- nell'importazione tutti i longs dovrebbero essere sostituiti da ints.

Domanda: perché avevate bisogno della seconda dimensione?

Un'altra domanda: da dove viene 76? La dimensione della tua struttura è 52 + 2*8 = 68;

 
TheXpert:

A proposito, ho fatto un errore nel mio -- nell'importazione tutti i longs dovrebbero essere sostituiti da ints.

Domanda: perché avevate bisogno della seconda dimensione?

Ho fatto il terzo ;)) -- per studiare la reazione della struttura.


Un'altra domanda: da dove viene 76? La dimensione della tua struttura è 52 + 2*8 = 68;

Ah, stavo guardando la dimensione reale della struttura dell'array, quindi ho aggiunto alcuni dati noti (
store.reserved = 0xEEEEEEEEEEEEEEEE;
) e scannerizzato.
 

Altri suggerimenti per possibili flag -- statico/dinamico e indicatore/convenzionale

static\dynamic è fuori, statico come "long x[5]" non è scritto come una struttura, ma come un array di log.

 

Questo è tutto per ora:

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

Questo dovrebbe essere sufficiente per l'idea, quindi possiamo provare ad implementarla.

Per oggi ho finito.

 

Non dispiacerti per il tuo tempo...

MQ dovrebbe fare queste cose, altrimenti tutto questo lavoro può andare in malora, per esempio, con il rilascio di una nuova build.

Sarebbe molto più logico giustificare la necessità di tali miglioramenti in modo intelligente e intelligente, poi forse MQ lo farebbe "su ordinazione".

 
komposter:

Sarebbe molto più logico giustificare la necessità di tali modifiche in modo intelligente e comprensibile, poi forse MQ lo farebbe "su ordinazione".

MQ non guadagnerà certamente dei soldi, quindi spetta a loro farlo da soli.
 
sergeev:
MQ non farà sicuramente dei soldi, quindi dovete farlo voi stessi.
Per cominciare, bisogna capire PERCHE'? E a cosa servirà?

Oh, e grazie agli interessati, grazie ai post in questo thread ho scoperto che la descrizione nell'aiuto non è aggiornata...
 
mql5:

Sì e grazie agli interessati, grazie ai post in questo thread ho scoperto che la descrizione nell'aiuto non è aggiornata...

Ilyas, ecco come chiamarlo :))

Ho capito che tutta la squadra MK si teneva la pancia mentre guardava la ricerca. E il riferimento era così vicino... :)

Ma si vede che il forum è composto da veri professionisti che possono solo ricostruire la struttura e capire cosa è responsabile di cosa.


PS

l'aiuto è stato già corretto?