Array-Referenzen - Seite 5

 
TheXpert:
Oh, meine Kniescheiben für dich, ich fange gerade erst an zu graben.

Nun, hier ist mein Bagger, ich habe ihn etwas bequemer gemacht.

#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:
Es sollte auch ein AsSeries-Flag und möglicherweise einige andere geben.
О! Richtig, im dritten Byte das vierte Bit (zählt von Bit Null abwärts)
 

Übrigens habe ich einen Fehler in meiner Datei gemacht - beim Import sollten alle longs durch ints ersetzt werden.

Frage: Warum brauchten Sie eine zweite Dimension?

Eine weitere Frage: Woher kommt die Zahl 76? Die Größe Ihrer Struktur beträgt 52 + 2*8 = 68;

 
TheXpert:

Übrigens habe ich einen Fehler in meiner Datei gemacht - beim Import sollten alle longs durch ints ersetzt werden.

Frage: Warum brauchten Sie eine zweite Dimension?

Ich habe die dritte gemacht ;)) -- um die Reaktion der Struktur zu untersuchen.


Eine weitere Frage: Woher kommt die Zahl 76? Die Größe Ihrer Struktur beträgt 52 + 2*8 = 68;

Ah, ich habe mir die tatsächliche Größe der Array-Struktur angesehen, also habe ich einige bekannte Daten hinzugefügt (
store.reserved = 0xEEEEEEEEEEEEEEEE;
) und durchgescannt.
 

Weitere Vorschläge für mögliche Flaggen - statisch/dynamisch und Indikator/konventionell

static\dynamic ist out, static wie "long x[5]" wird nicht als Struktur, sondern als Array von Logs geschrieben.

 

Das war's dann auch schon:

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

Das sollte für die Idee ausreichen, damit wir versuchen können, sie umzusetzen.

Ich bin für heute fertig.

 

Haben Sie kein Mitleid mit Ihrer Zeit...

MQ sollte solche Dinge tun, sonst kann all diese Arbeit den Bach runtergehen, zum Beispiel bei der Veröffentlichung eines neuen Builds.

Es wäre viel logischer, die Notwendigkeit solcher Verbesserungen auf intelligente Weise zu begründen, dann würde MQ sie vielleicht "auf Bestellung" durchführen.

 
komposter:

Es wäre viel logischer, die Notwendigkeit solcher Änderungen auf intelligente und verständliche Weise zu begründen, dann würde MQ sie vielleicht "auf Bestellung" vornehmen.

MQ wird sicherlich kein Geld verdienen, also müssen sie es selbst tun.
 
sergeev:
MQ wird definitiv kein Geld verdienen, also müssen Sie es selbst tun.
Zunächst einmal müssen Sie verstehen, WARUM? Und wozu soll das gut sein?

Oh, und danke an alle Beteiligten, dank der Beiträge in diesem Thread habe ich entdeckt, dass die Beschreibung in der Hilfe veraltet ist...
 
mql5:

Ja, und vielen Dank an die Beteiligten, dank der Beiträge in diesem Thread habe ich entdeckt, dass die Beschreibung in der Hilfe veraltet ist...

Ilyas, so sollte man es nennen :))

Ich vermute, dass sich das gesamte MK-Team die Bäuche hielt, während sie die Suche beobachteten, und die Referenz war so nah... :)

Aber man kann sehen, dass das Forum echte Profis sind, die nur die Struktur rekonstruieren können und verstehen, was wofür verantwortlich ist.


PS

Wurde die Hilfe bereits korrigiert?

Grund der Beschwerde: