エラー、バグ、質問 - ページ 710 1...703704705706707708709710711712713714715716717...3185 新しいコメント Anatoli Kazharski 2012.04.09 12:51 #7091 変数配列のサイズを 決定するために必要だが、エラーが出る。void OnStart() { int j=1000; //--- double arrBalancesTS[][j]; } //---//---定数(#define)や数値で直接動作しますが、このようなことはありません。なぜ? Valerii Mazurenko 2012.04.09 12:55 #7092 tol64:変数配列のサイズを決定するために必要だが、エラーが出る。 //---//---定数(#define)や数値で直接動作しますが、このようなことはありません。なぜ? 定数の場合は静的な配列、変数の場合は動的な配列となります。また、動的なものの大きさは、ArrayResize Документация по MQL5: Основы языка / Типы данных / Объект динамического массива www.mql5.com Основы языка / Типы данных / Объект динамического массива - Документация по MQL5 TheXpert 2012.04.09 12:55 #7093 tol64: なぜ? 2次元目以降のサイズは固定です。定数で設定するしかない。 Rashid Umarov 2012.04.09 12:56 #7094 tol64:定数(#define)や数値の場合は、直接動作しますが、このようなことはありません。なぜ?なぜなら、#defineで 定義すると、コンパイラはコンパイル前に 遭遇したマクロを正しいエントリに置き換えるだけだからです。したがって、それは見ている void OnStart() { //--- double arrBalancesTS[][1000]; }MQL5言語と矛盾しないようにすること。 Rashid Umarov 2012.04.09 13:21 #7095 Yedelkin:OKです。それなら度胸がつく。そこで、Print() 関数の説明には、「 double型の データは、小数点以下16 桁の精度で出力する」と書かれています。実は、Print()関数は、やや丸みを帯びたデータを出力 することが判明しています。ND 0 victorg2 (EURUSD,M1) 11:04:42 Print(b)=200.0 MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.999999999999716ポイントは、実数は 有効数字17桁以下でメモリに保存されることです。この例で違いを感じてみてください。//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { double a,b; a=7.0/200.0; b=7.0/a; Print("Print(b)=",b); Print("Print(DoubleToString(b,16))=",DoubleToString(b,16)); Print("Print(StringFormat(b,%.15G))=",StringFormat("%.15G",b)); Print("Print(StringFormat(b,%.16G))=",StringFormat("%.16G",b)); Print("Print(StringFormat(b,%.17G))=",StringFormat("%.17G",b)); Print("Print(StringFormat(b,%.18G))=",StringFormat("%.18G",b)); //19999999999999997 Print("Print(StringFormat(b,%.15f))=",StringFormat("%.15f",b)); Print("Print(StringFormat(b,%.16f))=",StringFormat("%.16f",b)); Print("Print(StringFormat(b,%.17f))=",StringFormat("%.17f",b)); } //+------------------------------------------------------------------+ ヘルプの記述も修正される予定です。 Anatoli Kazharski 2012.04.09 13:46 #7096 notused: 定数の場合は静的な配列、変数の場合は動的な配列となります。また、動的なもののサイズは ArrayResize を用いて決定される。TheXpert です。 2次元目以降のサイズは固定です。定数で設定するしかない。ロッシュなぜなら、#defineで 定義すると、コンパイラはコンパイル前に 遭遇したマクロを正しいエントリに置き換えるだけだからです。したがって、それは見ている MQL5言語と矛盾しないようにすること。 ありがとうございます。1次元と2次元の配列のサイズが計算で定義され、定数にはできない場合、どうすればよいか教えてください。ArrayResize()では、結局のところ、最初の次元だけサイズを変更することができます。また、初期状態では設定できないのに、なぜ変数値を適用することで配列のサイズを変更できるのでしょうか? --- 2012.04.09 13:47 #7097 tol64: ありがとうございます。1次元、2次元ともに配列のサイズが計算で決まり、定数にできない場合、どうすればよいか教えてください。ArrayResize()では、1次元目のサイズのみ変更可能です。また、初期状態では設定できないのに、なぜ変数を使って配列のサイズを変更できるのでしょうか? クラスをご利用ください。 Rashid Umarov 2012.04.09 13:49 #7098 tol64: ありがとうございます。1次元、2次元ともに配列のサイズが計算で決まり、定数にできない場合、どうすればよいか教えてください。ArrayResize()では、1次元目のサイズのみ変更可能です。また、初期状態では設定できないのに、なぜ変数値を適用することで配列のサイズを変更できるのでしょうか? CMatrixクラスの例については、オーバーロード操作の セクションを参照してください。 speedy 2012.04.09 14:10 #7099 こんにちは。2つのクラスでメッセージを交換させる方法がわかりません。AクラスにはBへのリンクを、BクラスにはAへのリンクを持たせたい。コンパイルエラーが出たのですが、もしかしたらMQL5ではそれができないのかもしれません。しかし、それがなければ、オブジェクト・プログラミングは30%しか使われない。解決策としては、すべてを知り尽くした大きなGODクラスを1つ書けばいいのかもしれません。しかし、これではあまりエレガントとは言えませんね。解決に協力してくれそうな人は?ありがとうございました。 Rashid Umarov 2012.04.09 14:23 #7100 クラスについては、前方宣言を 参照してください。 1...703704705706707708709710711712713714715716717...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
変数配列のサイズを 決定するために必要だが、エラーが出る。
//---
//---
定数(#define)や数値で直接動作しますが、このようなことはありません。なぜ?
変数配列のサイズを決定するために必要だが、エラーが出る。
//---
//---
定数(#define)や数値で直接動作しますが、このようなことはありません。なぜ?
tol64:
なぜ?
定数(#define)や数値の場合は、直接動作しますが、このようなことはありません。なぜ?
なぜなら、#defineで 定義すると、コンパイラはコンパイル前に 遭遇したマクロを正しいエントリに置き換えるだけだからです。したがって、それは見ている
MQL5言語と矛盾しないようにすること。
OKです。それなら度胸がつく。そこで、Print() 関数の説明には、「 double型の データは、小数点以下16 桁の精度で出力する」と書かれています。実は、Print()関数は、やや丸みを帯びたデータを出力 することが判明しています。
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.999999999999716
ポイントは、実数は 有効数字17桁以下でメモリに保存されることです。
この例で違いを感じてみてください。
ヘルプの記述も修正される予定です。定数の場合は静的な配列、変数の場合は動的な配列となります。また、動的なもののサイズは ArrayResize を用いて決定される。
2次元目以降のサイズは固定です。定数で設定するしかない。
なぜなら、#defineで 定義すると、コンパイラはコンパイル前に 遭遇したマクロを正しいエントリに置き換えるだけだからです。したがって、それは見ている
MQL5言語と矛盾しないようにすること。
ありがとうございます。1次元、2次元ともに配列のサイズが計算で決まり、定数にできない場合、どうすればよいか教えてください。ArrayResize()では、1次元目のサイズのみ変更可能です。また、初期状態では設定できないのに、なぜ変数を使って配列のサイズを変更できるのでしょうか?
ありがとうございます。1次元、2次元ともに配列のサイズが計算で決まり、定数にできない場合、どうすればよいか教えてください。ArrayResize()では、1次元目のサイズのみ変更可能です。また、初期状態では設定できないのに、なぜ変数値を適用することで配列のサイズを変更できるのでしょうか?