MetaTrader 4 Build 529 ベータ版リリース、新コンパイラー搭載 - ページ 51

 
Barbarian:

他のクラスは試されましたか?同様に機能しないのでしょうか?

プログラムを書くときに)必要に応じて試してみたり、(うまくいかないところに)プラグインを入れたりして、そのときが来るまで待つんです。

Canvasクラスを見てみると、クラスメソッドにMQL5の関数が使われています。これが原因である可能性が高いです。例えば、メソッド?

メソッドはMQL5のTextSetFontを使用していますが、これはおそらくMQL4ではまだ実装されていないものです。ただし、ヘルプの説明文にはすでに存在します。おそらく、実装を忘れてしまったのでしょう。

ところで、エディタでのシンタックスハイライトは、開発者が本当によくやってくれました。クラスメソッドと言語関数を区別することは、非常に有効です。

5~6年前のビルドでは、TextSetFont()を含め、すべて正常に動作していました。

    Label = new CCanvas();      
    Label.CreateBitmapLabel("MyLabel",150,150,250,150,//COLOR_FORMAT_ARGB_RAW);
     COLOR_FORMAT_ARGB_NORMALIZE);
    Label.FillRectangle(5,5,220,120,ColorToARGB(BkColor,220));
    //0xffbbbb66);
    if(!Label.FontSet("Comic Sans MS",28,FW_BOLD)) Print(GetLastError());
    Label.TextOut(15,5,"Превед Label",ColorToARGB(0x004400,255));
    if(!Label.FontSet("Comic Sans MS",32,FONT_ITALIC|FONT_UNDERLINE|FW_LIGHT,-100)) Print(GetLastError());
    Label.TextOut(15,35,"Превед Label",ColorToARGB(0x004400,255));
    Label.Update();

ただ、後で無効化されます // うまくいけば一時的にですが :)

というのも、それがうまくいったとき、仕様通りに動いたからです。

 
MetaDriver:
私はプログラムを書いているのですが、必要に応じて試してみています。

TextSetFont()を含め、5-6ビルド前に既に全てがそこで動作していました。例えば、このコードは問題なく動作しました。

後で無効になっただけで、できれば一時的にでもいいので :)

というのも、仕様通りに動くからです。

それにしては、とても不思議なことです。機能を拡張するために最初から有効になっているのであれば、無効にする意味はありません。一般的には、変更点と修正されたバグのリストを含むアップデートされたビルドを入手することができればいいと思います。新しいМТ4の解析には、もっと問題がありそうです。

ところで、エラーが出ています。new演算子は、C++のように割り当てられたメモリへのポインタを返すわけではありません。こんな感じで作ってください。

    CCanvas Label;// = new CCanvas();      
    Label.CreateBitmapLabel("MyLabel",150,150,250,150,//COLOR_FORMAT_ARGB_RAW);
     COLOR_FORMAT_ARGB_NORMALIZE);
    Label.FillRectangle(5,5,220,120,ColorToARGB(BkColor,220));
    //0xffbbbb66);
    if(!Label.FontSet("Comic Sans MS",28,FW_BOLD)) Print(GetLastError());
    Label.TextOut(15,5,"Превед Label",ColorToARGB(0x004400,255));
    if(!Label.FontSet("Comic Sans MS",32,FONT_ITALIC|FONT_UNDERLINE|FW_LIGHT,-100)) Print(GetLastError());
    Label.TextOut(15,35,"Превед Label",ColorToARGB(0x004400,255));
    Label.Update();

とか、こんな感じ。

    CCanvas* Label = new CCanvas();      
    Label.CreateBitmapLabel("MyLabel",150,150,250,150,//COLOR_FORMAT_ARGB_RAW);
     COLOR_FORMAT_ARGB_NORMALIZE);
    Label.FillRectangle(5,5,220,120,ColorToARGB(BkColor,220));
    //0xffbbbb66);
    if(!Label.FontSet("Comic Sans MS",28,FW_BOLD)) Print(GetLastError());
    Label.TextOut(15,5,"Превед Label",ColorToARGB(0x004400,255));
    if(!Label.FontSet("Comic Sans MS",32,FONT_ITALIC|FONT_UNDERLINE|FW_LIGHT,-100)) Print(GetLastError());
    Label.TextOut(15,35,"Превед Label",ColorToARGB(0x004400,255));
    Label.Update();
    
    delete Label;

で、動作するようになります。https://www.mql5.com/ru/docs/basis/types/object_pointers をお読みください。 私も、最初はC++を忘れていてつまずきました。

 
artmedia70:


設定の「コミュニティ」タブにニックネームとパスワードを設定しています。Editor Navigatorで必要なファイルを選択し、MQL5 Storage --> Addを選択すると、Navigatorのファイル名が青い「+」で表示されるようになりました。追加されるようです。以前は追加されていたが、後から変更されたファイルも、赤丸の中に「!」マークが表示されます。違いがあるようです。しかし、リポジトリ自体に追加されたファイルは見当たりません。

どうしたんですか?


はい、(ストレージは)機能します。必ずしも100%ではありませんが(バージョンの保存についてはまだ分かっていないかもしれません)、機能します。

省略記号をクリックするだけ ...- この初期フォルダには、2つのフォルダ(プロジェクトと 個人)が入っています。

 
ALXIMIKS:


はい、(ストレージが)機能します。100%ではありませんが(バージョン保存に関してまだ解明されていないのかもしれません)、機能します。

省略記号をクリックするだけ ...- 初期フォルダに2つのフォルダ(projectとpersonal)を入れています。

もちろん、クリックしました。前のレベルに戻ること。
 
artmedia70:
もちろん、そうです。前のレベルに戻ること。


追加したファイルに緑色の丸にチェックが入っていますか?

の場合、まずMQL Storeg ==> add で追加し、次にファイルまたはフォルダをクリックしてPCM ==> commit でコミットする必要があります。

 
ALXIMIKS:


追加されたファイルに緑色の丸に目盛りがついているのがわかりますか?

の場合、まずMQL Storeg ==> add で追加し、次にファイルまたはフォルダをクリックしてPCM ==> commit でコミットする必要があります。

ありがとうございます、試してみます。そのようなことはしていません。
 
ALXIMIKS:


追加されたファイルに緑色の丸に目盛りがついているのがわかりますか?

の場合、まずMQL Storeg ==> add で追加し、次にファイルまたはフォルダをクリックしてPCM ==> commit でコミットする必要があります。

その通り、その通りです。助かりました ;)
 
Barbarian:

ところで、エディタでのシンタックスハイライトについては、開発者が素晴らしい仕事をしてくれています。

ええ、この色調はとても気に入っています。スタジオにも同じものが欲しいです :-)
 
Barbarian:

それじゃあ、とても不思議ですね。最初から機能を拡張するためにオンになっているのに、なぜオフにしてしまうのか。

チャートコードを抜本的に改革するのであれば、納得がいく。そして、おそらくそうでしょう(実行する新機能がたくさんあるので)。


一般的には、変更点と修正されたバグのリストを含むアップデートされたビルドを入手することができれば、本当に良いことだと思います。新しいМТ4の勉強で這いつくばることが少なくなりそうです。

そうでしょう。理想的な状態でしょう。現実的には、かなりリソースを消費します。すべての変更を1つのリストにまとめるには...異なる人が異なるモジュールを 担当し...

ところで、エラーが出ていますね。new演算子は、C++のように割り当てられたメモリへのポインタを返すわけではありません。こんな感じで作ってください。

いいえ、そこにエラーはありません。ポインタはコードの上で宣言されています(私は断片を送っただけです)。助けようとしてくれてありがとう。
 
MetaDriver:
チャートコードが抜本的に改革されるのであれば、納得がいく。そして、おそらくそうでしょう(新機能の立ち上げが多いので)。

そうなんです。理想的には現実的にはかなりリソースを消費します。すべての変更点を1つのリストにまとめると......。異なる人が異なるモジュールを担当し...

いいえ、そこにエラーはありません。ポインタはコードの上で宣言されています(私は断片を送っただけです)。

助けようとしてくれてありがとう。
ポインタがコードの上で宣言されていることは明らかですが、そうとは言えません :) とにかく、あなたのコードに私の修正を加えて実行したところ、私のバリエーションは両方とも動作しました。ところで、C++と違ってnew演算 子の動作方法を変更する際に、開発者が何を指針にしたのか、いまだに理解できない。メモリ上のアドレスへのポインタより、ハンドルへのポインタの方が良いというのは理解できない。