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

 
Sergey Dzyublik:

古いコードを見つけると約束した私の投稿が削除されたということは、何も約束してないということですね...。
冗談です。


まだキーボードの機能が小さく、控えめに言っても目立たない、そんな暗黒時代(3年以上前)に書かれたものです。
しかし、今では、記憶が確かな限り、特定のキーの状態を把握する機能が標準装備されています。
そのため、以下のコードスニペットは役に立たないと思われます。

のところです。
lparam - 現在のイベントにおいて押されたキーのコード.
last_key_code - 直前のイベントにおいて押されたキーのコード。
g_first_key - 組み合わせの最初のキーのコード.
g_second_key - 組み合わせの2番目のキーのコード.
time - キーを押した現在のイベントの時間です。
last_time_code - 直前にキーが押されたイベントの時間。
g_time_limit - 1回目と2回目のキー押下がキーの組み合わせとみなされるまでの最大時間です。

私のハンドラは、Ctrlキーを押したときに他のキーに反応しませんが、これはどのように回避したのでしょうか?

ここぞとばかりに、https://www.mql5.com/ru/forum/231958

 
この問題でどこに行けばいいのかわからないのですが、最近Metaeditorがファイルを開いたり、新しいファイルを作ったりするときにしっかりハングアップしてしまい、タスクを削除してやり直さなければならないのですが、誰か出会ってどうすればいいのかわかる人はいませんか?
ファイル:
err.png  132 kb
 
Andrii Djola:
この問題でどこに行けばいいのか分かりませんが、最近Metaeditorが新しいファイルを開いたり作成したりするときにしっかりハングアップして、タスクを削除してやり直さなければなりません。誰かこの問題に直面して、どうすればいいか知っていますか?

こんにちは。

インストールされている端末のバージョンとOSを教えてください。

 
Evgeny Chernyshev:

アフタヌーン!

インストールされている端末のバージョンとOSを教えてください。

Win 10 x64

2018.01.29付MT5ビルド1755

 
プロジェクトではなく、選択したソースファイルを個別に(従来通り)コンパイルする方法はありませんか?
 

私は鍛えているのか、それともこんなものなのか?

   double t   = 280/60;
   string rez = DoubleToString(t,16);
   Print (rez); //  2018.03.18 01:20:57.117	Test (EURUSD_i,H1)	4.0000000000000000

и

   double t   = (double)280/60;
   string rez = DoubleToString(t,16);
   Print (rez); // 2018.03.18 01:21:51.881	Test (EURUSD_i,H1)	4.6666666666666670
 
Vladimir Pastushak:

私は働きすぎなのか、それともこんなものなのか?

これは正しい(intはintで割る、intはdoubleになる)。

 double t   = 280/60;
 
Sergey Dzyublik:

その通りです(intをintで割るとintの結果がdoubleに変換される)。

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

 
 

ヘルプにあるこの例は動作しないという理解で合っていますか?

//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit() 
  { 
//--- включение сообщений о прокрутке колесика мышки 
   ChartSetInteger(0,CHART_EVENT_MOUSE_WHEEL,1); 
   return(INIT_SUCCEEDED); 
  } 
//+------------------------------------------------------------------+ 
//| ChartEvent function                                              | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) 
  { 
   if(id==CHARTEVENT_MOUSE_WHEEL) 
     { 
      //--- разберем состояние кнопок и колесика мышки для этого события  
      int flg_keys = (int)(lparam>>32);          // флаг состояний клавиш Ctrl, Shift и кнопок мышки 
      int x_cursor = (int)(short)lparam;         // X-координата, в которой произошло событие колесика мышки 
      int y_cursor = (int)(short)(lparam>>16);   // Y-координата, в которой произошло событие колесика мышки 
      int delta    = (int)dparam;                // суммарное значение прокрутки колесика, срабатывает при достижении +120 или -120 
      //--- обработаем флаг  
      string str_keys=""; 
      if((flg_keys&0x0001)!=0) str_keys+="LMOUSE "; 
      if((flg_keys&0x0002)!=0) str_keys+="RMOUSE "; 
      if((flg_keys&0x0004)!=0) str_keys+="SHIFT "; 
      if((flg_keys&0x0008)!=0) str_keys+="CTRL "; 
      if((flg_keys&0x0010)!=0) str_keys+="MMOUSE "; 
      if((flg_keys&0x0020)!=0) str_keys+="X1MOUSE "; 
      if((flg_keys&0x0040)!=0) str_keys+="X2MOUSE "; 
       
      if(str_keys!="") 
         str_keys=", keys='"+StringSubstr(str_keys,0,StringLen(str_keys)-1) + "'"; 
      PrintFormat("%s: X=%d, Y=%d, delta=%d%s",EnumToString(CHARTEVENT_MOUSE_WHEEL),x_cursor,y_cursor,delta,str_keys); 
     } 
  } 

CtrlとShiftとスクロール以外のボタンが効かない......。