mql5におけるOOP、テンプレート、マクロ、微妙な使い分け - ページ 24 1...171819202122232425262728 新しいコメント 削除済み 2020.02.23 10:57 #231 Igor Makanu: こうはいかない そして、これはバグ・故障のようです。前回の記事で紹介したPSに注目 追記:もしまだ本当にやりたいなら、name_dll(ドットなし)を試してみてください、多分それは離陸するでしょう。 Igor Makanu 2020.02.23 11:09 #232 Vict: そして、これはバグ・故障のようです。前の記事で紹介したPSに注目 MT4ではこの限りではありません MT4は実行時にのみDLL自体を見ますが、私があなたと議論しているのは - コンパイラ自体によって許可されていない、つまり、コンパイラはこのように渡します。 #import "mylib.dll" #import #import "mylib" #import と、そのように書くと #import "mylib.dll" //'mylib.dll' - expressions are not allowed on a global scope #import つまり、厳密な構文指示 #import と引用符で囲まれた文字列があり、それがすべて1行に書かれています。 しかし、マクロ置換で #import "mylib.dll" を私の組み合わせで置き換えることができないのはなぜでしょうか? ビクト 追記:もしまだ本当にやりたいなら、name_dll(ドットなし)を与えてみてください、多分それは離陸するでしょう。 条件付きコンパイルでインクルードもビルドできないのはなぜか?- MQLでは、すべてが非常にプリミティブに動作します。私が理解していないだけであってほしいが 削除済み 2020.02.23 11:27 #233 Igor Makanu: MT4ではこの限りではありません MT4は実行時にのみDLL自身を見ますが、私があなたと議論しているのは - コンパイラはそれを通過させない、すなわち、コンパイラは次のように通過させるでしょう。 と、そのように書くと つまり、厳密な構文指示 #import と引用符で囲まれた文字列があり、それがすべて1行に書かれています。 しかし、なぜ私の組み合わせのために#import "mylib.dll "をマクロで代用できないのか、誰か知っていますか? 条件付きコンパイルでインクルードもビルドできないのはなぜか?- MQLでは、すべてが非常にプリミティブに動作します。私が理解していないだけであってほしいが なぜうまくいかないのかわからない、私にはうまくいっている。 #define DD "jkjk.dll" #import DD void fn(); #import あとは、異なるEAに異なるDDを設定するだけです(「lib_1.dll」「lib_2.dll」)。 削除済み 2020.02.23 11:32 #234 Vict: なぜあなたには効かないのか、私には効くのです あとは、異なるEAに異なるDDを設定するだけです(「lib_1.dll」「lib_2.dll」)。 すみません、忘れていました。私のソースは、µlで、slangプリプロセッサーに渡されています - はい、それは動作しません。 Igor Makanu 2020.02.23 11:36 #235 Vict: すみません、忘れていました - 私のソースは、µlで、スラングプリプロセッサを通過します - はい、それは動作しません。 一般的には、MQLを取ったので、意図したとおりに動作するでしょう #ifdef USE_DLL_NUMBER #ifdef USE_DLL_NUMBER02 #import "mylib2.dll" #endif #else #import "mylib.dll" #endif メインコードで2つのマクロ置換を宣言しています。 #define USE_DLL_NUMBER #define USE_DLL_NUMBER02 ...は、1つのマクロ USE_DLL_NUMBER02に削減します - 一般的に私に合うものに似ています - 私はUSE_DLL_NUMBER03、USE_DLL_NUMBER04を書きたい - 将来的に必要性が生じた場合。 Igor Makanu 2020.02.23 12:04 #236 Igor Makanu: ...USE_DLL_NUMBER02 - は、一般的に私に合うものに似ています - 私はUSE_DLL_NUMBER03、USE_DLL_NUMBER04を書くことができるようにしたい - 将来的に必要な場合は、単一のマクロにそれを 減らす 一般に、ブルートフォースの助けを借りて、この問題を解決することができました。 #ifdef USE_DLL_NUMBER01 #define USE_DLL_NUMBER #endif #ifdef USE_DLL_NUMBER02 #define USE_DLL_NUMBER #endif #ifdef USE_DLL_NUMBER03 #define USE_DLL_NUMBER #endif #ifdef USE_DLL_NUMBER04 #define USE_DLL_NUMBER #endif #ifdef USE_DLL_NUMBER05 #define USE_DLL_NUMBER #endif Seric29 2020.02.23 15:31 #237 mql4はなぜ値によって動作する#ifマクロを実装しないのでしょうか? #define Znah 0 #define PrmI int Peremen=6; #define PrmD double Peremen=3.345; #if Znah//если больше 0 то появится переменная int Peremen PrmI #else PrmD//иначе появится переменная double Peremen #endif その結果、後続のプログラム全体を適切なタイプに修正することができます。 fxsaber 2020.02.25 21:23 #238 falseを返す式に出会ったことがない。ORDER_TIME_DONE_MSC == DEAL_TIME_MSC そのため、取引履歴から注文執行時間の統計を取ることは困難です。 成行注文でORDER_TIME_SETUP_MSCの 値を一致させても、注文では意味がないのです。 fxsaber 2020.02.26 14:07 #239 旧式のものである可能性が高いです。const 修飾子は、オブジェクトが変更されないことを保証するものではありません。struct A { int i; void f( const A &Value ) { Print(Value.i); // 0 this.i = Value.i + 1; Print(Value.i); // 1 } }; void OnStart() { A a; a.f(a); } コンパイラによっては、このような状況で警告を出すものもあるでしょう。 TheXpert 2020.02.26 14:24 #240 fxsaber: おそらく、一部のコンパイラはこのような状況で警告を出すでしょう。 指定子はオブジェクト全体ではなく、参照を参照しています。すべてが正当であり、なぜコンパイラは悪態をつかなければならないのでしょうか? 1...171819202122232425262728 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こうはいかない
そして、これはバグ・故障のようです。前回の記事で紹介したPSに注目
追記:もしまだ本当にやりたいなら、name_dll(ドットなし)を試してみてください、多分それは離陸するでしょう。
そして、これはバグ・故障のようです。前の記事で紹介したPSに注目
MT4ではこの限りではありません
MT4は実行時にのみDLL自体を見ますが、私があなたと議論しているのは - コンパイラ自体によって許可されていない、つまり、コンパイラはこのように渡します。
と、そのように書くと
つまり、厳密な構文指示 #import と引用符で囲まれた文字列があり、それがすべて1行に書かれています。
しかし、マクロ置換で #import "mylib.dll" を私の組み合わせで置き換えることができないのはなぜでしょうか?
追記:もしまだ本当にやりたいなら、name_dll(ドットなし)を与えてみてください、多分それは離陸するでしょう。
MT4ではこの限りではありません
MT4は実行時にのみDLL自身を見ますが、私があなたと議論しているのは - コンパイラはそれを通過させない、すなわち、コンパイラは次のように通過させるでしょう。
と、そのように書くと
つまり、厳密な構文指示 #import と引用符で囲まれた文字列があり、それがすべて1行に書かれています。
しかし、なぜ私の組み合わせのために#import "mylib.dll "をマクロで代用できないのか、誰か知っていますか?
条件付きコンパイルでインクルードもビルドできないのはなぜか?- MQLでは、すべてが非常にプリミティブに動作します。私が理解していないだけであってほしいがなぜうまくいかないのかわからない、私にはうまくいっている。
あとは、異なるEAに異なるDDを設定するだけです(「lib_1.dll」「lib_2.dll」)。なぜあなたには効かないのか、私には効くのです
あとは、異なるEAに異なるDDを設定するだけです(「lib_1.dll」「lib_2.dll」)。すみません、忘れていました。私のソースは、µlで、slangプリプロセッサーに渡されています - はい、それは動作しません。
すみません、忘れていました - 私のソースは、µlで、スラングプリプロセッサを通過します - はい、それは動作しません。
一般的には、MQLを取ったので、意図したとおりに動作するでしょう
メインコードで2つのマクロ置換を宣言しています。
...は、1つのマクロ USE_DLL_NUMBER02に削減します - 一般的に私に合うものに似ています - 私はUSE_DLL_NUMBER03、USE_DLL_NUMBER04を書きたい - 将来的に必要性が生じた場合。
...USE_DLL_NUMBER02 - は、一般的に私に合うものに似ています - 私はUSE_DLL_NUMBER03、USE_DLL_NUMBER04を書くことができるようにしたい - 将来的に必要な場合は、単一のマクロにそれを 減らす
一般に、ブルートフォースの助けを借りて、この問題を解決することができました。
mql4はなぜ値によって動作する#ifマクロを実装しないのでしょうか?
その結果、後続のプログラム全体を適切なタイプに修正することができます。そのため、取引履歴から注文執行時間の統計を取ることは困難です。
成行注文でORDER_TIME_SETUP_MSCの 値を一致させても、注文では意味がないのです。
コンパイラによっては、このような状況で警告を出すものもあるでしょう。
fxsaber:
おそらく、一部のコンパイラはこのような状況で警告を出すでしょう。
指定子はオブジェクト全体ではなく、参照を参照しています。すべてが正当であり、なぜコンパイラは悪態をつかなければならないのでしょうか?