Références de tableaux - page 5

 
TheXpert:
Oh, mes rotules à vous, je commence à peine à creuser.

Eh bien, voici ma pelleteuse, je l'ai rendue un peu plus confortable.

#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:
Il devrait également y avoir un indicateur AsSeries et peut-être d'autres.
О ! Exact, dans le troisième octet, le quatrième bit (compte à rebours à partir du bit zéro).
 

Au fait, j'ai fait une erreur dans la mienne -- dans l'importation, tous les longs devraient être remplacés par des ints.

Question : pourquoi avez-vous besoin de la deuxième dimension ?

Une autre question : d'où vient le chiffre 76 ? La taille de votre structure est de 52 + 2*8 = 68 ;

 
TheXpert:

Au fait, j'ai fait une erreur dans la mienne -- dans l'importation, tous les longs devraient être remplacés par des ints.

Question : pourquoi avez-vous besoin de la deuxième dimension ?

J'ai fait le troisième ;)) -- pour étudier la réaction de la structure.


Une autre question : d'où vient le chiffre 76 ? La taille de votre structure est de 52 + 2*8 = 68 ;

Ah, je regardais la taille réelle de la structure du tableau, donc j'ai ajouté des données connues (
store.reserved = 0xEEEEEEEEEEEEEEEE;
) et l'a parcouru.
 

Autres suggestions d'indicateurs possibles : statique/dynamique et indicateur/conventionnel.

static\dynamic is out, static comme "long x[5]" n'est pas écrit comme une structure, mais comme un tableau de logs.

 

C'est à peu près tout pour le moment :

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

Cela devrait suffire pour l'idée, afin que nous puissions essayer de la mettre en œuvre.

J'en ai fini pour aujourd'hui.

 

Ne soyez pas désolé pour votre temps...

MQ devrait faire ce genre de choses, sinon tout ce travail peut partir à la poubelle, par exemple lors de la sortie d'une nouvelle version.

Il serait beaucoup plus logique de justifier la nécessité de telles améliorations de manière intelligente et réfléchie, puis peut-être que MQ le ferait "sur commande".

 
komposter:

Il serait beaucoup plus logique de justifier la nécessité de telles modifications de manière intelligente et intelligible, puis peut-être que MQ le ferait "sur commande".

MQ ne gagnera certainement pas d'argent, c'est donc à eux de le faire eux-mêmes.
 
sergeev:
MQ ne va certainement pas gagner de l'argent, vous devez donc le faire vous-même.
Pour commencer, vous devez comprendre POURQUOI ? Et à quoi cela servira-t-il ?

Oh, et merci aux personnes concernées, grâce aux messages dans ce fil, j'ai découvert que la description dans l'aide est périmée...
 
mql5:

Oui et merci aux personnes concernées, grâce aux messages dans ce fil, j'ai découvert que la description dans l'aide est périmée...

Ilyas, c'est comme ça qu'il faut l'appeler :))

Je crois que toute l'équipe MK se tenait le ventre en regardant la recherche. Et la référence était si proche... :)

Mais vous pouvez voir que le forum est composé de vrais professionnels qui ne peuvent que reconstruire la structure et comprendre ce qui est responsable de quoi.


PS

l'aide a-t-elle déjà été corrigée ?

Raison: