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

 
Igor Makanu:

初めて2次元配列のラッパークラスを作ろうとしたのですが、[]をオーバーロードして通常の2次元配列 arr[1][2] として扱うことができません。

このような問題は、4〜5年前に解決され、既製のソリューションを持つ別のブランチがありました。
現役の参加 者で今日まで生き残った人は少なく、ほとんどが追放された......。

P.s. 二次元配列ではなく、クラス上の三次元配列でした。

 
あ、このスレッドhttps://www.mql5.com/ru/forum/6729 あったような気がする。
В MQL5 всегда есть место подвигу ! ;)
В MQL5 всегда есть место подвигу ! ;)
  • 2012.05.16
  • www.mql5.com
Общее обсуждение: В MQL5 всегда есть место подвигу ! ;)
 
Sergey Dzyublik:

このような問題は、4〜5年前に解決され、既製のソリューションを持つ別のブランチがありました。
現役の参加 者のうち、今日まで生き残っている人は少なく、ほとんどが再アクセス禁止になって しまった...。

P.s. 二次元配列ではなく、クラス上の三次元配列でした。

そういやあのスレ見て きたけど、BANされたり削除されたアカウントって一つもないんだよな。その支店の人たちは全員、そこにいて、生きているんです。

そうやって政権に投げつけてスキャンダルを作ろうと思ったのでしょうか?バカみたいでしょう?この辺で悪を見るのはやめましょう。

 
Sergey Dzyublik:
あ、あの枝があったような気がするhttps://www.mql5.com/ru/forum/6729

このスレッドは先月読んだと思うのですが、今夜もう一度見てみます。

が、オーバーロード[][]を使って、L値でもR値でもMQLで実装できることに気がつき、実験終了。

もし、動的な2次元配列の完全なソリューションを持っているならば、CodeBaseに載せてください。

 
class A{
public:
   uchar data1;
};

A func(){
   A a;
   a.data1 = 1;
   return a;      //object of 'A' cannot be returned, copy constructor 'A::A(const A &)' not found
}


void OnStart(){  
   A a;

   //1
   A aa = a;
   a = aa;
   
   //2
   a = func();   
}

1と//2の違いは何ですか?
残念ながら、任意のデータ型を 持つコンテナでテンプレートを使用する場合、この問題を回避することはできません。

特殊なケースとして、問題を解決するために、継承を実装し、親クラスのコピーコンストラクタを定義し、問題関数の戻り値の型をベースから親に置き換えることができます。

 
デベロッパー
配列の容量(メモリ上に確保されている要素数)を返す関数を追加してください。ArrayResizeの reserveパラメータと混同しないように。
文字列の場合はStringBufferLenが ありますが、配列の場合は 何もありません。
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

セルゲイ・デジブリク さん 2019.05.22 16:01

コードを提供してくれたTheXpertに 改めて感謝します。
ArrayResize capacity MT5(build 2057)で以下のような結果が出ています。


結果
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TEST_ArrayCapacity:TEST_ArrayCapacity
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,100,0):100
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,100,100):100
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,101,100):201
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,200,100):201
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,201,100):201
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,202,100):302
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,100,1):302
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,100,400):302
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,300,400):302
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,301,600):302
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,302,600):302
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,303,600):903
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,100,0):903
2019.05.22 17:00:50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,100,100):903
2019.05.22 17:00:50.250 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,100,-1):100
2019.05.22 17:00:50.250 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,100,100):100
2019.05.22 17:00:50.250 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store,105,100):205

 

こんばんは!(^o^)

どなたか教えてください。

このようなことは初めてです。関数の1つに簡単なコードがあります。

double yyy=28/50*100;
   
Print("test yyy=", yyy);

結果

"2019.05.21 19:38:29.364 2019.04.01 00:05:00 test yyyy=0.0"


 
Michael2K:

こんばんは!(^o^)

どなたか教えてください。

int(28) / int(50) * int(100) == int(0) * int(100) == int(0) == double(0.0)


タイプダブルを 指定する場合は、フルストップを使用します。

double yyy=28./50*100;
 
Sergey Dzyublik:
また、ArrayResizeのreserve_sizeパラメータを使用する場合の疑似コードも教えてください。
次のArrayResizeで新しいreserve_size値が設定されたときのシステムの動作についての記述がない。
Sergey Dzyublik:


シーケンシャルに呼び出す場合、以下の仮定は正しいでしょうか。

このスレッドでかつて紹介されていた疑似コードを調べてみてください。 私の記憶では、配列のサイズが この容量を超えたときだけ、そこで容量が増加します。 もちろん、何かが変わっている可能性もありますが。

また、サラシの値を取得する機能は、本当に便利です。

理由: