MQL4/5ドキュメントを扱うSlickEditのセットアップとコンパイル。 - ページ 10

 
CArrayObj *CSelect::ByOrderProperty(
CArrayObj *list_source,ENUM_ORDER_PROP_INTEGER property,long value,ENUM_COMPARER_TYPE mode)
  {
   if(list_source==NULL) return NULL;
   CArrayObj *list=new CArrayObj();
   if(list==NULL) return NULL;
   list.FreeMode(false);
   ListStorage.Add(list);
   int total=list_source.Total();
   for(int i=0; i<total; i++)
     {
      COrder *obj=list_source.At(i);
      if(!obj.SupportProperty(property)) continue;
      long obj_prop=obj.GetProperty(property);
      if(CompareValues(obj_prop,value,mode)) list.Add(obj);
     }
   return list;
  }

これはArtyom Trishkinの ライブラリの例で、すべて良いのですが、ただ一つ、著者は、後で使うと主張しているので、使っていないラッパーをたくさん持っていますが、今はメモやリマインダー用にして います。
彼のライブラリを使いたいのですが、コードを折りたたむことができるエディタを追加しないと、コード内で方向性を決めずに行うことは不可能です。MetaEditorで最初から最後まですべてのコードをめくる頃には、すでに何をしたかったのか忘れてしまっているのです。Ctrl+gなどの標準エディタで可能な限りのアドオンを使い、さらにペンと紙を使うのはもう飽きた!

質問です。

list.FreeMode(false);
list_source.At(i);

メソッドにポインタでパラメータを渡す場合、またはクラスへのポインタを作成する場合、それ以外はMQL(またはこれ)には不可能です。SlickEditはポインターで渡されるクラスのメソッドを 定義することを拒否しており、これはMQLの厳密な定義です。
しかし、ポインタ演算子(*)を参照演算子(&)に変更すると、すべてが見えるようになり、クラスメンバの自動定義まで動作するようになります。しかし、これはMQLでは許されないことなのです

そこで、(*)演算子のポインタをどこにどのように設定すれば、SlickEditで(&)演算子として 扱われるのかという疑問があります。

 
BmC:

これはArtyom Trishkinの ライブラリの例で、すべて良いのですが、ただ一つ、著者は、後で使うと主張しているので、使っていないラッパーをたくさん持っていますが、今はメモやリマインダー用にして います。
彼のライブラリを使いたいのですが、コードを折りたたむことができるエディタを追加しないと、コード内で方向性を決めずに行うことは不可能です。MetaEditorで最初から最後まですべてのコードをめくる頃には、すでに何をしたかったのか忘れてしまっているのです。Ctrl+gなどの標準エディタで可能な限りのアドオンを使い、さらにペンと紙を使うのはもう飽きた!

質問です。

メソッドにポインタでパラメータを渡す場合、またはクラスへのポインタを作成する場合、それ以外はMQL(またはこれ)には不可能です。SlickEditはポインターで渡されるクラスのメソッドを 定義することを拒否しており、これはMQLの厳密な定義です。
しかし、ポインタ演算子(*)を参照演算子(&)に変更すると、すべてが見えるようになり、クラスメンバの自動定義まで動作するようになります。しかし、これはMQLでは許されないことなのです

そこで、(*)演算子のポインタをどこにどのように設定すれば、SlickEditで(&)演算子として 扱われるのかという疑問があります。

(&) と (*) 演算子はオーバーライドできないようです(SEのせいではありません)。

SEでC++を使うように、MQL5を使うのですか? どうしたらいいのかわかりません。は、C#と同様に動作させてみてください。

 
Andrey Dik:

(&) と (*) 演算子はオーバーライドできないようです(SEのせいではありません)。

MQL5でもSEのC++と同じように動作するのでしょうか。は、C#と同様に動作させてみてください。

マクロは状況によって演算子(*と&)の扱いが変わると思うので、C#やC++ではないユーザー言語として作業しています。

 
BmC:

マクロは状況によって演算子(*と&)の扱いが変わると思うので、C#やC++ではないカスタム言語として作業しています。

SEでカスタム言語を作成して作業することは可能なのでしょうか? それは知りませんでした。

という意味です。


 

プロ版のみ、自分の好きな言語を設定することが可能です。SlickEditのガイドに指定されていない独自の言語を作成する場合、ヘルプに記載されているように、より高度なマクロの設定に直面するので、ポインタで渡されたクラスのネストされたメソッドを検索するように設定されているこのマクロを探しています。
C++でポインタ(*)オブジェクトで渡される場合、MQLでは(.)の代わりに演算子(->)を使用することを意味することがわかりました。したがって、カスタム言語定義時にマクロで条件付きコンパイルコマンドを置き換えたり適用したりすると、これらの演算子が代用されます。つまり、実際には演算子のアクセス構造を変更したいので、この場合、提案されたC#やC++言語の設定は使えないということです。

バージョン25をダウンロードし、現在調整中です。 フォーラムで、カスタム言語接続の設定がより柔軟になったと読みました。カスタム言語とオンテンプレートのC#とC++の両方を作成してみて、どちらが良いかを確認し、バージョン25の設定方法を掲載するかもしれません。

 
BmC:

プロ版のみ、自分の好きな言語を設定することが可能です。SlickEditのガイドに指定されていない独自の言語を作成する場合、ヘルプに記載されているように、より高度なマクロの設定に直面するので、ポインタで渡されたクラスのネストされたメソッドを検索するように設定されているこのマクロを探しています。
C++でポインタ(*)オブジェクトで渡される場合、MQLでは(.)の代わりに演算子(->)を使用することを意味することがわかりました。したがって、カスタム言語定義時にマクロで条件付きコンパイルコマンドを置き換えたり適用したりすると、これらの演算子が代用されます。つまり、実際には演算子のアクセス構造を変更したいので、この場合、提案されたC#やC++言語の設定は使えないということです。

バージョン25をダウンロードし、現在調整中です。 フォーラムで、カスタム言語接続の設定がより柔軟になったと読みました。カスタム言語とC#とC++のテンプレートの両方を作成してみて、どちらが良いかを確認し、バージョン25の設定方法を掲載するかもしれません。

はい、ただ、カスタム言語の作成が可能であれば、カスタム言語を作成し、対応するCPPまたはC#言語ファイルから既製の言語から設定を転送し、対応する演算子の動作を変更してみるという方法があります。

 
Andrey Dik:

はい、ただ、カスタム言語の作成が可能であれば、カスタム言語を作成し、対応するCPPやC#の言語ファイルから既製の言語から設定を転送し、対応する演算子の動作を変更してみるという方法がありますよ。

のように、オブジェクトの参照渡しに適しているため、設定はc#(CSharp)から転送する必要があります。c++(cpp)では、オブジェクトのメソッドを参照するために、演算子(.)の代わりに演算子(->)を挿入する必要があります。

カスタム言語作成時の2つ目の問題、バージョン25ではカラーリングがコピー設定で渡されない、もしくはタンクSlickEdit v25.0.2.0 64bitだけです。 カラーリングについては開発者のミスだと思います、以前のバージョンではすべてうまくいっていましたが、今回のバージョンでは止まっています)。