エラー、バグ、質問 - ページ 1161

 
joo:

v4.3、カスタムファームウェア。

メインウィンドウは横位置、その他のダイアログ(注文)は縦位置です。メインウィンドウとダイアログの切り替えが制御できず、イライラする。

さあSmart Rotatorのような専用ソフトでもなく...助かります。

面白いことに、端末のSmart Rotatorで強制的に横向きに設定すると、すべてのウィンドウが横向きになります。- 端末のポートレートモードを設定したら、あれ?- へへへにもかかわらず、あるウィンドウは横長で、あるウィンドウは縦長である。

 

メタエディタの不具合。

オブジェクトへのポインタを返す関数Obj()があるとします。

class CObject {   public:     int value; }; CObject object;

CObject* Obj() { return GetPointer(object); }

ここで、Obj().value= 10という関数で直接オブジェクトを参照すると、ポイントを入力してもクラスの メンバーやメソッドの ポップアップリストが表示されない。

 
meat:

MQL がクラスパターンをサポートしていないことを考えると、CArray クラスは 万能ではありません。 私たちの配列は必ずしも単純な型から構成されているわけではなく、プログラム中の新しいクラスごとに CArray の子孫の完全な構造を作成しても、あまり面白くありません。CArrayの子孫ファイル(ArrayInt.mqh、ArrayDouble.mqhなど)がどれだけのコード行数を必要とするか見てみましょう。

また、番組構成がどうなっているかは二の次である。話が脱線しましたが、要は変更可能なパラメータ(この場合はreserve_size)があれば、それを取得することが可能なはずです。

複合型は CObject から継承され,CArrayObj に安全にパッケージングされています.

reserve_size - 経済的なプログラミングのパラダイムを打ち破る。初心者のためにだけ存在し、普通の言語には全く存在してはならないものです。

 
C-4:

reserve_size - 質素なプログラミングパラダイムに違反する。初心者のためにだけ存在し、普通の言語では全く存在しないはずのものです。

不思議なパラダイムをお持ちですね。予約は、メモリの再割り当てやデータ移動(これらは非常に高価な操作です)の回数を減らし、資源を 経済的に利用するために設計されています。 このパラメータを管理しなければならないのは、コード開発者だけです。 なぜなら、自分のプログラムがどのようにメモリを使うかは、事前に開発者しかわからないからです。また、配列は配列であり、どこでもメモリを必要とするので、言語とは関係ありません。

 
meat:

これは、あなたにとって不思議なパラダイムですね。予約は、メモリの再割り当てやデータ転送の回数を減らし、資源を経済的に利用するためのものです(これらはかなり高価な操作です)。 そして、このパラメータを管理しなければならないのはコード開発者であり、彼だけが自分のプログラムがどのようにメモリを使用するかを事前に知っているからです。 また、配列はそのまま配列であり、どこでもメモリを必要とするので、言語とは関係がありません。

だから、あなたはすでに自分の質問に答えているのです。

このパラメータを管理するのはコード開発者である。なぜなら、自分のプログラムがどのようにメモリを使用するかは、事前に開発者しか知らないからである。言語とはまったく関係ない。

言語手段とは関係ないので、より高い、ユーザーレベルで解決しなければならない。そこで、これらのタスクのために特別に作られたCArray* クラスを使って、タスクを解決します。ちなみに、このクラスは、このタスクのために作られたかのように、見事に処理します。

 
meat:

不思議なパラダイムをお持ちですね。冗長化とは、リソースを惜しみなく使い、メモリの再割り当てやデータ転送(かなりコストのかかる操作)の回数を減らすために、緻密に設計されたものです...。

void TestFoo()
{
  CArrayObj listObj;
  listObj.Resize(100);
  for(int i = 0; i < 100; i++)
     listObj.Add(new CObject());
  int count = CountObj(listObj);
}

void CountObj(CArrayObj* obj)
{
   return obj.Size();
}
超お得なコードです。要素数があらかじめ分かっているため、メモリの再割り当ては全く発生しない。渡されるのは配列ではなく、配列へのポインタです。スピードは驚くほど速く、reserve_sizeは必要ありません。このソリューションの何が気に入らないのでしょうか?
 
C-4:
超お得なコードです。アイテム数があらかじめ分かって いるため、メモリの再割り当ては一切ありません。渡されるのは配列ではなく、配列へのポインタです。スピードは驚くほど速く、reserve_sizeも必要ない。このソリューションの何があなたに合わないのでしょうか?

え、そんな簡単なことなら......。現実の世界では、あらかじめ要素の数が決まっていることはまずありません。しかも、この数値はダイナミックに変化するのです。ですから、あなたが単純化した「Hello world」の例は意味がありません。たった2行で置き換えることができる。

CObject listObj[100];
int count = ArraySize(listObj);

まあ、こんなくだらないことに意味があるのでしょうか。 個人的にreserve_sizeパラメータを使わないのであれば、歓迎します。しかし、みんなが馬鹿だ、初心者だと結論を出してはいけません。標準的なSTLコンテナでは、配列(vectorやstringなど)を扱うために、reserveや capacityといった メソッドも常に存在しています。

 
joo:

さあSmart Rotatorのような専用ソフトでもなく...助かります。

面白いことに、端末のSmart Rotatorで強制的に横向きにすると、すべてのウィンドウが横向きになるのです。- 端末をポートレートモードにしたら、あれ?- へへへにもかかわらず、あるウィンドウは横長で、あるウィンドウは縦長である。

純正ファームウェアで問題なく動作する(少なくとも期待通り)
 

最新のビルドでは、MetaEditorの検索( 上のボックス)が正しく動作しなくなりました。そこで探している言葉を入力すると、どこの誰かもわからない、意味もないところから取ってきた似たようなフレーズに自動的に置き換えられてしまうのです。その結果、コードの中で何も見つけることができません。 例えば、「ERROR_VALUE」という名前の変数を見つけようとすると、代わりに「error_value 7」が検索行に表示されます。

質問:どうしたんですか? この検索行の左翼の屑はどこから来て、どうすれば出てくるのですか?

 
meat:

最新のビルドでは、MetaEditorの検索( 上のボックス)が正しく動作しなくなりました。そこで探している言葉を入力すると、どこの誰かもわからない、意味もないところから取ってきた似たようなフレーズに自動的に置き換えられてしまうのです。例えば、"ERROR_VALUE" という名前の変数を探そうとすると、代わりに "error_value 7" と表示されます。

質問:どうしたんですか? この検索行の左翼の屑はどこから来て、どうすれば出てくるのですか?

キーボードをきれいにする。