#include <Arrays\ArrayObj.mqh>
CArrayObj ArrCur; // массив с объектами, каждый объект содержит структуру с полями ордеров и его id
CArrayObj ArrPrev; // массив с объектами, каждый объект содержит структуру с полями ордеров и его idclass CID : public CObject
{
public: int id;
CID() {}
CID(CID* pt) {this = pt;}
};
voidOnStart()
{
// -----------------------------------------------------------------
CID* pCur = new CID; // создаем объект для текущих параметров
pCur.id = 25; // вносим текущие данные
ArrCur.Add(pCur); // помещаем в массив объектов CID* pTemp = ArrCur.At(0); // вытягиваем объект по указателю
CID* pPrev = new CID(pTemp); // в дин.объект копируем в конструкторе данные с предыд.указателя
ArrPrev.Add(pPrev); // помещаем в массив объектов
ArrCur.Clear(); // чистим текущий массив// -----------------------------------------------------------------// --- для вывода в журналint sizeCur = ArrCur.Total(); // размер = 0int sizePrev = ArrPrev.Total(); // размер = 1ENUM_POINTER_TYPE pTypeCur = CheckPointer(ArrCur.At(0)); // POINTER_INVALIDENUM_POINTER_TYPE pTypePrev = CheckPointer(ArrPrev.At(0)); // POINTER_DINAMYCPrint(__FUNCTION__, " sizeCur=", sizeCur, " pTypeCur=", EnumToString(pTypeCur));
Print(__FUNCTION__, " sizePrev=", sizePrev, " pTypePrev=", EnumToString(pTypePrev));
ArrPrev.Clear(); // чистим массив
}
そこでポインタは
また、データのコピーはどのように行うのですか?要素ごとにというのは別として?
これが正しいかどうかは分かりませんが、コンストラクタを追加することで問題が解決しました。誰かの役に立つかもしれない。
ビジュアルテスターモードで、ChartScreenShotが 正しく動作しない。
開発者の皆さん、こんにちは。ChartScreenShot()がテスターで動作するのはいつになるのか、お伺いしてもよろしいでしょうか?
このようなEAで、入力パラメータの変更(F7)、グローバル変数の値の 変更(F3)の方法を教えてください。
チャートから外すのでさえ問題です。
以前はDebugは完全に使えませんでしたが、F5でスクリプトを実行すると時々便利です(新しいチャートで 実行され、現在のチャートで 実行されない理由は不明ですが)。
そして、偶然にもそのような記録をログで発見したのです。
同時に、スクリプト自体も実行されている。次のような行をコードに挿入してみました。
DebugBreak」の行が出力されるが、停止しない。
(なぜ新しいチャートで 動作し、現在のチャートで 動作しないのかは不明ですが)。
エディター サービス->設定->デバッグ/プロファイリング
で、どのシンボルがデバッグに使用されるかを設定できますが、それでも別のチャートで実行 されることに変わりはありません。
そこでシンボルが指定されていない場合は、Market Watchの一番最初の(トップの)シンボルで実行されます。
たまに発動するブレーク ポイントを全般的に設けています。2875
を構築中で、ポイントを設定し、実データでデバッグ開始をクリックすると、デバッグが終了して、停止せずにブリップスルーしてしまうのです。
エディターでターミナルを再起動すると、ブレークポイントが 表示されるようになり、他のスタート/ストップデバッグまで、その後、再びスキップし始めます。
履歴データでデバッグを実行すると、全くテスターウィンドウを呼び出さず、デバッグ終了と同時にブレークポイントを スキップしてしまう。
過去データのブレークポイントで止まったことは一度もなく、デバッグ完了まで ずっとスキップしています。
しかし、なぜ過去のデータで テスターが呼ばれ、保存されたパラメータがそこから取得されるのか、そういう設計になっているのか、曲者なのか、よくわかりませんね。
エディター サービス->設定->デバッグ/プロファイリング
で、どのシンボルがデバッグに使用されるかを設定できますが、それでも別のチャートで実行 されることに変わりはありません。
そこでシンボルが指定されていない場合は、Market Watchから一番最初の(トップの)シンボルで実行されます。
私の考えでは、これは非常に不便なことです。現在のチャートには、インジケータ、プログラムが相互作用することになっているグラフィックオブジェクト、設定などがあります。新しい "空の "チャートが開始されます。さらに、デバッグではない通常モードのプログラムは、新しいチャートではなく、現在のチャートのナビゲーターから 起動されます - これは明らかに矛盾しています
https://www.mql5.com/ru/forum/368597
結果:2
期待される結果:0