エラー、バグ、質問 - ページ 2472

 

カスタムシンボルを作成 し、25年分の日足で埋めるのですが、これは約400kbの重さです。 しかし、シンボルフォルダには、合計15mbのサイズの.hccファイルが作成されています!その上、すべて約20秒かかります。 問題外です... これをどう説明しますか?

 
Sergey Dzyublik:

テンプレート関数へのポインタを持つtypedefの宣言が可能であることに驚きました。
しかし、その幸せは長くは続かなかった。

ということなのですが
 

最近、MTの「機能」や「バグ」が何十件も報告されています。
修正されるのを待つ価値があるかどうかは、どうすればわかるのでしょうか?
新しいビルドがリリースされるたびに、すべてをテストすることを提案しないでください。

(MT5(ビルド2057)では修正されて いません)"Strategy Tester: 計画では2パスだが、実際には無限パス>"OnInit critical error "のエラーにより900pc".
(MT5(build 2057)では修正されていません)"Invalid value of array size field within default assignment operator for structures with dynamic arrays" (動的配列を持つ構造体のデフォルトの代入演算子の配列サイズフィールドが無効です).
(MT5(build 2057)では修正されていません)"関数からクラスオブジェクトを値で返すとき、コンパイラはそのクラスのデフォルトコピーコンストラクタを見ません".
(MT5(build 2057)では修正されていません)"パターンクラスと「複雑な」構造に対する「それ自体」の型キャストに関するコンパイルバグ".
(MT5(build 2057)では修正されていません)"typedef で作業する場合、明示的に特殊化されたテンプレート関数を使用すると、このテンプレート関数のコードが生成されない".
(MT5(build 2057)では修正されていません)"typedef 内で同じ関数シグネチャを再利用するとコンパイルエラーになる".
#
(MT5(ビルド2057)では修正されていません)"文字列関数の大部分が、文字列内のNULL文字で動作しない(例: ShortArrayToString, StringInit, StringFill)"。
(MT5(ビルド2057)では修正されていません)"StringSetLength関数は、文字列の長さを「切り詰める」ためにのみ動作し、増やすことはできません。
(MT5(ビルド2057)で修正)"Strategy Tester: 750 "metatester64.exe" processesrun".
#
"フォーラム www.mql5.com, 画像付きのメッセージを編集する場合, 前の画像が新しい画像に置き換えられることはありません".


提案します。
"デフォルトの代入演算子(コピーコンストラクタ)のコード生成/削除を ユーザーに強制することを許可する".
"ArrayCopyがクラスや「複雑な」構造体をコピーできるようにし、構造体があらゆるオブジェクトタイプに対して深いコピー機能を提供するのと同様にする".
"動的な配列を扱う際にユーザが容量値を読み取る/設定する機能を提供 する".

"シグナルズサービスのインフォグラフィックスを改善するための変更点"

 
A100:
そういうことだった んですね。

Template typedefと テンプレートクラスでtypedefを 使うことは別物です。
2番目のオプションは機能しますが、異なる型のテンプレートクラスを再利用する場合、名前空間の重複の問題があります。

 
Alexey Navoykov:

私はカスタムシンボルを作成し、25年間の毎日のバーでそれを埋める、これは約400kbの重さでなければなりません。 しかし、シンボルフォルダは15 mbの合計サイズの.hccファイルを作成します!その上、それはすべて約20秒かかります!問題外... これはどう説明することができますか?

収録されているものを見てみましょう。

 
fxsaber:

記録されたものを見てください。

hccのフォーマットがわからないので、ファイルの中身は確認できませんが、ターミナルでは日足のバーが表示されています。 小さいタイムフレームに切り替えても同じバーが表示されます。 どうやら、最初はすべてのタイムフレームもファイルに保存されているようなので...。分足だけが保存され、そこから他のすべての時間枠が合成されると思っていました。 そして分足の数は、すでに述べたように日足と一致しており、つまり合計で約7000本の分足があるのです。

したがって、7000*M1、7000*M2、7000*M3など、7000*D1までをファイルに保存しているのではと見当をつけています。 もしそうなら、合計15MBを取り込むことになるのでしょう。修正:約5(既存の履歴を更新する場合は20 -)。

 

フォーラムのサイトが何か壊れているようです。
例えば、"すべての投稿"からは、これと これが消えて います。
しかも、数ヶ月前までは6000を超える評価だったようです。でも、もしかしたら、時間が経つにつれて、アクティビティが少なくなり、評価が下がっているかもしれませんね。

 
class A{
public:
   struct AA{
      uchar data[8];
   };
   static AA obj;
};

AA A::obj = {0};     // OK


template<typename T>
class B{
public:
   struct BB{
      T data[8];
   };
   static BB obj;
};

template<typename T>
BB B::obj = {0};       //'BB' - declaration without type    




void OnStart(){  
   ArrayPrint(A::obj.data);
   //ArrayPrint(BB<int>::obj.data);
}


現在、テンプレートクラス内で宣言された静的変数を 使用することはできません。
名前空間を導入することで、この制約を回避することができるのでしょうか?

 
Sergey Dzyublik:


現在、テンプレート・クラスの内部で宣言された静的変数を 使用することはできません。
ネームスペースの導入で、この制約を回避できるのでは?

変数がどうのこうのということではなくBBクラスを見ることができないので、template<typename T> class BBとして Bクラスの外部に取り出さなければならない。

 
Alexey Navoykov:

変数がどうのこうのということではなくこれはBBクラスを見ていない、template<typename T>class BBとして Bクラスの外に移動する必要がある。

この投稿は、もし彼らが箱から出してサポートを "ごまかす "なら、という開発者宛のものでした。

ここでも、テンプレート・クラスの内部で宣言された静的変数が 使えないという問題がある。
typedefの場合はどうすればいいのでしょうか?

 
class A{
public:
   typedef void (*callback_A)();
   static callback_A f_ptr;

};
callback_A A::f_ptr = NULL;                  // Ok


template<typename T>
class B{
public:
   typedef T (*callback_B)();
   static callback_B f_ptr;
};
template<typename T>
callback_B B::f_ptr = NULL;                  //'callback_B' - declaration without type	

void func_A(){PRINT(__FUNCSIG__);}
int func_B(){PRINT(__FUNCSIG__); return 0;}

void OnStart(){  
   A::f_ptr = func_A;
   A::f_ptr();

   //B<int>::f_ptr = func_B;
   //B<int>::f_ptr();
}