配列の参照 - ページ 5

 
TheXpert:
ああ、私の膝頭をあなたに、私は掘り始めたばかりです。

さて、私のディガーですが、少し快適にしてみました。

#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:
また、AsSeriesフラグやその他のフラグもあるはずです。
О!右、3 バイト目の 4 ビット目(ビット 0 からカウントダウン)。
 

ちなみに、私の場合は、インポートにおいて、すべてのlongsをintsに置き換えるべきというミスがありました。

質問:なぜ2次元が必要だったのですか?

もうひとつ、76はどこから来たのでしょうか?

 
TheXpert:

ちなみに、私の場合は、インポートにおいて、すべてのlongsをintsに置き換えるべきというミスがありました。

質問:なぜ2次元が必要だったのですか?

私は3つ目をやりました ;)) -- 構造の反応を研究するためです。


もうひとつ、76はどこから来たのでしょうか?

あ、配列の構造体の実サイズを見てたので、既知のデータを追加した(
store.reserved = 0xEEEEEEEEEEEEEEEE;
)でスキャンしてみました。
 

静的/動的、インジケータ/コンベンショナルなど、フラグに関するその他の提案

staticdynamicはアウト、long x[5]のようなstaticは構造体として書かず、logの配列として書きます。

 

今のところ、そんなところです。

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

アイデアとしては十分だと思いますので、ぜひ実装してみてください。

今日はもういいや。

 

自分の時間を惜しんではいけない...。

MQはそういうことをやってくれないと、たとえば新しいビルドのリリースで、せっかくの作業が水の泡になりかねない。

そのような改良の必要性を理知的に正当化する方がよほど論理的で、それならMQは「注文通り」やってくれるかもしれない。

 
komposter:

そのような改造の必要性を理路整然と正当化する方がよほど論理的で、そうすればMQは「注文通り」やってくれるかもしれない。

MQは確実に儲からないので、自分たちでやるしかない。
 
sergeev:
MQは絶対に儲からないから、自分でやるしかない。
そもそも、WHYを理解する必要があるのか?そして、それが何の役に立つのか?

あ、関係者の方、このスレッドの書き込みのおかげで、ヘルプの記述が 古いことがわかりました...。
 
mql5:

はい、そして関係者の皆様、このスレッドの書き込みのおかげで、ヘルプの記述が 古いことがわかりました...。

イリヤス、そう呼ぶべきでしょう :))

MKチーム全員がお腹を抱えながら捜索を見守っていたようですね。 そして、参考文献はとても近くにありました...。:)

しかし、フォーラムは構造を再構築し、何に責任があるのかを理解することしかできない本物のプロフェッショナルであることがおわかりいただけると思います。


追記

は、すでにヘルプが修正されていたのでしょうか?