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

 
AlexSTAL:
くそ...端末には、これだけの例が付属しているのですから...。...多くの例がある...SymbolInfoSample.mq5スクリプトを例とする。
最初に新しい概念を定義しておけば十分な場合もあります。そして、初めてプログラムの例を検証する。
 
インクルードファイルのフルパスを取得するには?


2つの機能があります。

__FILE__- ファイル名のみを 表示します。

MQL5_PROGRAM_PATH -作成された ex5ファイルへの パスを指定します。


質問 -mqh-fileのどこにある のかを知るにはどうしたらいいのでしょうか?

 
MetaEditorでは、「ファイル内の関数一覧」ボタンで一覧が表示されます。下にスクロールすると、Pで終わり、それ以上動かない(下向きの黒い三角形が非アクティブになる)、Rにもクラスがあるが。修正お願いします。
 
-Alexey-:
MetaEditorでは、「ファイル内の関数一覧」ボタンで一覧が表示されます。下にスクロールすると、Pで終わってそれ以上動かない(下向きの黒い三角形が非アクティブになる)、Rにもクラスがあるが。訂正してください。

そして、少なくともリストのおおよその大きさとは?リストのサイズに制限があるのかもしれませんが...。
 

バグなのか、コツを見つけたのか分かりませんが。次のコードは動作しますが、式がbooleanでないという警告が表示されます。

void OnStart()
  {
//---
   int a=3;
   int b=3;
   int c=3;
//---   
   if(a=b=c=3)Alert("a=b=c=3");
   else Alert("Условие не верно");
//---
  }
 
sergey1294:

バグなのかトリックなのかわからない。以下のコードは動作しますが、式がbooleanでない旨の警告が発生します。



なぜ、コードが動いてはいけないのか?

唯一、ifオペランドがboolに変換されていないため、コンパイラが警告を発して いますが、それ以外はすべて正しいです。

a,b,cは、ifの中で明示的に代入されているので、全く初期化しないことも可能です。

3 aに 代入し、aを bに 代入し、bを cに 代入し、それが 真であるかどうかを確認してからPrint()を記述します。

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора - Документация по MQL5
 
sergey1294:

バグなのか、コツを見つけたのか分かりませんが。次のコードは動作しますが、式がbooleanでないという警告が表示されます。


こんな感じでしょうか。

void OnStart()
{
//----------------------------------------------------------------------------//
//Work variables
int a=3;
int b=3;
int c=3;
//----------------------------------------------------------------------------//
  if(a&&b&&c==3)Alert("a=b=c=3");
  else Alert("Условие не верно");
//----------------------------------------------------------------------------//
}
 

では、この表現をどう書けば、悪態をつかないか教えてください。

void OnStart()
  {
//---
   int a=1;
   int b=2;
   int c=3;
//---   
   if(a<b<c)Alert("a<b<c");
   else Alert("Условие не верно");
//---
  }
 
sergey1294:

では、この表現をどう書けば、悪態をつかないか教えてください。


if(a<b&&b<c){Print("");}

最初の投稿では、割り当て操作を行っていますが、複数のカスケード割り当てでも問題ありません。ここでは、複数の比較を行おうとしています。

SZ 比較結果が2つ出力されているので、&&や他のブーリアン演算子で区切る必要があります。

 
sergey1294:

では、この表現をどう書けば、悪態をつかないか教えてください。


を提案します。

//----------------------------------------------------------------------------//
//Work variables
int a=1;
int b=2;
int c=3;
//----------------------------------------------------------------------------//
  if(a<b&&b<c)Alert("a<b<c");
  else Alert("Условие не верно");
//----------------------------------------------------------------------------//

ニコライは先手必勝です :)

ウラン です。

SZYは、出力に2つの比較結果があるので、&&などのブーリアン演算子で区切る必要があります。

この場合、&&のみ。