Referências de matriz - página 5

 
TheXpert:
Oh, as minhas rótulas para si, estou apenas a começar a cavar.

Bem, aqui está o meu escavador, tornei-o um pouco mais confortável.

#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:
Também deveria haver uma bandeira da série AsSeries e possivelmente algumas outras.
О! Certo, no terceiro byte o quarto bit (contagem decrescente a partir do bit zero)
 

A propósito, cometi um erro no meu - na importação, todos os anseios devem ser substituídos por ints.

Pergunta -- porque precisava de uma segunda dimensão?

Outra pergunta -- de onde veio 76? o tamanho da sua estrutura é 52 + 2*8 = 68;

 
TheXpert:

A propósito, cometi um erro no meu - na importação, todos os anseios devem ser substituídos por ints.

Pergunta -- porque precisava de uma segunda dimensão?

Eu fiz o terceiro ;)) -- para estudar a reacção da estrutura.


Outra pergunta -- de onde veio 76? o tamanho da sua estrutura é 52 + 2*8 = 68;

Ah, eu estava a ver o tamanho real da estrutura da matriz, por isso acrescentei alguns dados conhecidos (
store.reserved = 0xEEEEEEEEEEEEEEEE;
) e digitalizado através de scanner.
 

Mais sugestões para possíveis bandeiras -- estáticas/dinâmicas e indicadores/convencionais

estática\dinâmica está fora, estática como "long x[5]" não é escrita como uma estrutura, mas como um conjunto de troncos.

 

Por agora, é tudo:

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

Isso deve ser suficiente para a ideia, para que possamos tentar implementá-la.

Por hoje, estou farto.

 

Não tenha pena do seu tempo...

MQ deveria fazer tais coisas, caso contrário todo este trabalho pode ir por água abaixo, por exemplo, com o lançamento de uma nova construção.

Seria muito mais lógico justificar a necessidade de tais melhorias de forma inteligente e inteligente, então talvez a MQ o fizesse "por ordem".

 
komposter:

Seria muito mais lógico justificar a necessidade de tais modificações de forma inteligente e inteligível, então talvez a MQ o fizesse "à ordem".

O MQ certamente não ganhará dinheiro, por isso cabe-lhes a eles fazê-lo eles próprios.
 
sergeev:
MQ não vai definitivamente ganhar dinheiro, por isso tem de o fazer você mesmo.
Para começar, precisa de compreender PORQUÊ? E que bem fará?

Oh, e graças a todos os envolvidos, graças aos posts neste tópico descobri que a descrição na ajuda está desactualizada...
 
mql5:

Sim e graças às pessoas envolvidas, graças aos posts neste tópico descobri que a descrição na ajuda está desactualizada...

Ilyas, é assim que se lhe deve chamar :))

Percebo que toda a equipa MK estava de barriga para baixo enquanto assistia à busca. E a referência estava tão perto... :)

Mas pode ver que o fórum são verdadeiros profissionais que só podem reconstruir a estrutura e compreender o que é responsável por quê.


PS

a ajuda já foi corrigida?