初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 201

 
Alexsandr San:

mt4とmt5のどちらで使うのですか? ここに置いたコードは削除しました。

MQL4

削除済み  
Speculator:

MQL4

ここ、いいとこいっぱいhttps://www.mql5.com/ru/forum/131859/page6#comment_3359705
 
こんにちは、MT4で端末の電源を切っていても、VPSサーバーを接続した状態で電話やメールの通知を 受けることは可能でしょうか?
削除済み  
Alexsandr San:

私はあなたに助言する - 見つけるために多くの良いことがありますhttps://www.mql5.com/ru/forum/131859/page6#comment_3359705

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
マクロを適用した結果、どのようなコードに展開されるかを確認する方法はありますか?
 

より具体的で興味深い質問かもしれません。

同じ構成要素を別の機能で使っている

if(FileReadStruct(handle,temp_rate)!=60)
{
  IsError=true;
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError());
  return;
}

ただし、関数にはvoid型の ものと、値を返すものがあるので、それらからは0を返しています。

return(0);

その都度、正しいものに置き換えてくれる魔法のマクロを作れないか?

 
Yurij Kozhevnikov:

より具体的で興味深い質問かもしれません。

同じ構成要素を別の機能で使っている

ただし、関数にはvoid型の ものと、値を返すものがあるので、それらからは0を返しています。

このような魔法のマクロを作れば、それぞれのケースで必要なバリアントを代用してくれるのでしょうか?

マクロでreturnを使うのは、自分の脚に銃口を向けるようなもので、ifと組み合わせると、大砲になる)))でも、本当にそうしたいのなら

#define  CHECK_READ(dHndl,dRate,dRet)  do \
if(FileReadStruct(dHndl,dRate)!=60){    \
  IsError=true;   \
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); \
  return dRet;} while(false)
  
...
CHECK_READ(handle,temp_rate,);
...
CHECK_READ(handle,temp_rate,0);
...

テストはしていませんが、うまくいくはずです。また、銃をピストルに戻した)))

 

ありがとうございました。

そこで、最後のパラメータにreturnの値か、空白を渡すと、次のようになる。

return ;

とスペースは何の意味もありません。もちろん、お気に入りのブラケットなしでも使えることを、どうして忘れていたのでしょう。

return(x);
return x; //равноценны

ところで、この構成がループの中にあって、一度しか実行できないのはなぜか、教えてください。銃が、銃に戻ったのでしょうか?無限再帰のような状況も考えられるのでしょうか?

 
Yurij Kozhevnikov:

ありがとうございました。

そこで、最後のパラメータにreturnの値か、空白を渡すと、次のようになる。

とスペースは何の意味もありません。もちろん、私の大好きなブラケットなしでも使えることを、どうして忘れていたのでしょう。

同じ意味で、なぜこの構成が一度しか実行できないループの中に詰め込まれているのか、教えてください。銃が銃に戻ったのでしょうか?無限再帰とかそういう状況が考えられる?

if (condition) CHECK_READ(h,r,0); else CHECK_READ(h,r,1);
do-whileラッパーを使用しないマクロをデプロイして、何が起こるか見てみましょう)))
 
Vladimir Simakov:
if (condition) CHECK_READ(h,r,0); else CHECK_READ(h,r,1);
do-whileラッパーを使用しないマクロをデプロイして、何が起こるか見てみましょう))
if (condition) if(FileReadStruct(h,r)!=60){   
  IsError=true;   
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
  return 0;}; else if(FileReadStruct(dHndl,dRate)!=60){    
  IsError=true;   
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
  return dRet;};

=

if (condition) 
 if(FileReadStruct(h,r)!=60)
 {   
  IsError=true;   
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
  return 0;
 }; 
 else 
  if(FileReadStruct(dHndl,dRate)!=60)
  {    
   IsError=true;   
   Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
   return dRet;
  };

代用品の原理を正しく理解すれば、そのように思えるのですが。

中括弧の後に余分なセミコロンがある。そして、それ以外のものが今を指しているのかは不明です。

マクロ展開を自動化してどうなるかを簡単に確認する方法がないようなのが残念です。自分でスクリプトを作れれば別ですが。

ありがとうございました。マクロのwhileの後にセミコロンがないのは、理由があるのです。