ライブラリ: TradeTransactions - ページ 5

 
fxsaber:

ライブラリーのソースには、ある型の配列を別の型の配列に素早く変換 するConvert.mqhが 含まれている。

// 高速な配列キャスト。
#include <fxsaber\TradeTransactions\Convert.mqh> //https://www.mql5.com/ja/code/22166

void OnStart()
{
  MqlTick Ticks[];

  MqlRates Rates[];  
  CopyRates(_Symbol, PERIOD_CURRENT, 0, 10, Rates); // 見積もりを入手した。
  CONVERT::ArrayToArray(Rates, Ticks);              // MqlRates[] -> MqlTick[].

  MqlRates Rates2[];    
  CONVERT::ArrayToArray(Ticks, Rates2);             // MqlTick[] -> MqlRates[]。
  ArrayPrint(Rates2);                               // すべてが正しいことを確認する。
}
 
fxsaber :

リソースを通じて何でも交換できる。


あなたはContainer2をダウンロードしたと言っているが、使っていない。論理的にはそうなるはずだ:

  // 元の形式でデータを取得する
  string Str2[];
  Container2[0].Get(Str2);                // 配列を取得
  ArrayPrint(Str2);

  PRINT(Container2[1].Get<double>())      // 数字が出た
  PRINT(Container2[2].Get<MqlTick>().bid) // 構造体ができた   
もちろん、あなたの例でも結果は同じだ。

さらに重要なのは、上記のコードをスクリプトとして使い、ライブラリを

を得ました:

2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = string[2]
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = double
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() =MqlTick
2019.03.26 18:11:51.656 R-277866Original (EURUSD,M1) Stack overflow in '... \MQL5Scripts\forum R-277866Original.ex5'.

?
 
Alain Verleyen:

Container2をロードすると言っているが、使っていない。論理的にはそうあるべきだ:

そうです、例にタイプミスがあります。


もちろん、あなたの例では結果は同じです。

あなたの編集でも結果は同じです。


さらに重要なことは、上記のコードをスクリプトとして使用し、以下のサイトからライブラリをダウンロードした ことです。

を得ました:

2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = string[2]
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = double
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() =MqlTick
2019.03.26 18:11:51.656 R-277866Original (EURUSD,M1) Stack overflow in '... \MQL5Scripts\forum R-277866Original.ex5'.

?

ソースコードがないと何とも言えません。

 
fxsaber :
...

ソースがないと何も言えない。

ソースはまさにあなたのコードです。ビルド2009。

ファイル:
 
Alain Verleyen:

ソースはあなたのコードビルド2009。

エラーなしで実行された。

 

こんにちは。

私はただ、こう宣言します。

RESOURCEDATA<uchar> Res;

そして、このようなエラー

'Data' - struct undefined       Convert.mqh     75      49
in template 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' specified with [SOURCE=uchar,TARGET=uint]   Convert.mqh     60      14
'Data' - struct undefined       Convert.mqh     43      38
in template 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' specified with [SOURCE=uchar,TARGET=uint]   Convert.mqh     29      14

以前はなかったのですが、ターミナルを更新した 後(ビルド2085)表示されたと思います。それとも、私がどこか愚かなのでしょうか?)

 
Oleksii Chepurnyi:

以前は存在しなかったが、ターミナル・アップデート(ビルド2085)後に現れたのだと思う。

このコンパイラのバグをローカライズ

template <typename T>
struct A { T a; };

void f1()
{
  struct B { int Data; };
  A<B> Tmp;
}

void f2()
{
  struct B { int Data; };
  A<B> Tmp;
  
  Tmp.a.Data = 0; // 'Data' - 未定義構造
}
 
ターミナルを更新 したら、

はい、2037年にはそのようなエラーはありません。

 
Oleksii Chepurnyi:

そう、2037年にはそんなエラーはない。

バグを回避するために、IncludefxsaberTradeTransactionsConvert.mqhを 添付のものに置き換える。

ファイル:
Convert.mqh  4 kb
 
fxsaber:

Bypassed the bug, replaceIncludefxsaberTradeTransactions ReplicaConvert.mqh with attached one.

Works )ありがとう!