MQL4の新しい構文

 

ベータ版がリリースされてからしばらく経ちますが、1月中旬に正規版がリリースされるかもしれないというメモをどこかで見付けました。ベータ版で学んだアイデアや問題点を共有することに興味を持つコーダーがいるかもしれませんね。

新しいMQL4ソースの構文、エディター、コンパイラー、パターン、OOPなどに関するディスカッションを始めることは、すでに意味があるのでしょうか?

このトピックでは、バグレポートや叫び声はなく、建設的な議論のみをお願いします。

 

というのは、#includeディレクティブが繰り返されても無視されることがわかったからです。

int OnStart() {
#include <dummy.mqh>
#include <dummy.mqh>
#include <dummy.mqh>
#include <dummy.mqh>
}

と同じ働きをします。

int OnStart() {
#include <dummy.mqh>
}

クラス宣言を別ファイルで行っている場合、これは非常にありがたい動作なのだが、ヘルプファイルには記載がない。

 

新しいバージョンでは、少し速くなったように見えます。

Dynamic Arrays set-as-series は自動的にシフトするようです。

Function OverloadingはSwitchesよりも優れたインタフェースを提供する.

 
リークしたメモリ」の原因を突き止めるヒントを頂きたいのですが。何か良い方法はないでしょうか?
 
Ovo: リークしたメモリ」の原因を突き止めるヒントを頂きたい。何か良い方法はないでしょうか?
動的に割り当てられたメモリを削除する」|「再帰的な関数の 使用を制限する」ことを確認するような一般的なプログラミングの質問をされているのでしょうか。それとも、ベータ版のメモリリークのバグのことですか?
 
ubzen:
動的に割り当てられたメモリを削除する」|「再帰的な関数の使用を制限する」ことを確認するような、一般的なプログラミングの質問をしているのでしょうか。それともベータ版のメモリリークバグのことでしょうか?


間違いなく前者です。私はJAVA出身なので、未使用のオブジェクト参照に気を配るという経験はありません。ですから、一般的な警告メッセージを受け取った後に、リークしたオブジェクトを見つけるためのヒントがあるとありがたいという意味です(そのようなヒントがある場合)。今、私は警告が出力したバイト数から漏れたオブジェクトのクラスを識別しようとしています。

 
Ovo: 間違いなく前者です。私はJAVA出身なので、未使用のオブジェクトの参照に気を配った経験がないのです。ですから、一般的な警告メッセージを受け取った後、漏れたオブジェクトを見つけるためのヒントがあるとありがたいという意味です(そのようなヒントがあればですが)。今、私は警告が出力したバイト数から漏れたオブジェクトのクラスを識別しようとしています。

mt5と比べると不完全です。クラス名を示す別の行があるはずです。すぐに追加されることを期待します。

 

さて、漏水探索は本当に厄介なものになりました...予想以上です。

ツールを作るのに苦労したが、全然うまくいかなかった。new/delete文を再定義できることはわかったが、それを置き換えるものがないことに気がついた。これが括弧付きの関数 なら簡単なのだが、残念ながらステートメントである。new/delete文を登録するためのラッパーを作ることもできるが、それは非常につらい解決策であり、将来性もない。

もし、どなたかリークの原因を突き止めた経験をお持ちの方がいらっしゃいましたら、是非ともご一報ください。

 
Ovo:<br /> 翻訳="no">。

さて、漏水探索は本当に厄介なものになりました...予想以上です。

ツールを作るのに苦労したが、全然うまくいかなかった。new/delete文を再定義できることはわかったが、それを置き換えるものがないことに気がついた。これが括弧付きの関数なら簡単なのだが、残念ながらステートメントである。new/delete文を登録するためのラッパーを作ることもできるが、それは非常につらい解決策であり、将来性もない。

もし、リークの原因を突き止めた経験をお持ちの方がいらっしゃいましたら、ぜひともご一報ください。

多分、これらの記事(mql5用ですが、新しいmql4にも同じことが適用されます)が解決策を見つけるのに役立つと思います。

MQL5でのオブジェクトの作成と破棄の順序

MQL5でオブジェクトポインタを使用する
 
angevoyageur:

多分、これらの記事(mql5用ですが、新しいmql4にも同じことが当てはまります)は、あなたが解決策を見つけるのを助けることができます。

MQL5におけるオブジェクトの生成と破壊の順序

MQL5でオブジェクトポインタを使う



ご指摘ありがとうございます。

残念ながら、この記事はリークを処理する助けにはならないようで、リークが発生する理由を説明しているだけです。

私がこれまで行ってきた唯一の解決策は、作成するすべてのコードに対してユニットテストを作成し、開発中に頻繁にユニットテストを実行することです。そのため、もしリークが発生したら、その原因となったテストケースを切り分けようとすることがあります。しかし、テストによってはかなり複雑なものもあるので、簡単には解決できない。また、エディタが面倒です。

 

新シンタックスをどう区別するか?

次期」構文と「オリジナル」構文を参照するための別の言葉が必要な気がします。MQは正式名称を気にせず、互換性があるように見せかけ続けているようです。

ですから、私たちは自分たちで適切な名称を見つけなければならないようです。何か提案はありますか?MQL4 V2, OMQL4 (i.e.Object-), MQL4.1 ...?