Errori, bug, domande - pagina 2169

 
Sergey Dzyublik:

Se il mio post con la promessa di trovare il vecchio codice è stato cancellato, significa che non ho promesso nulla...
Stavo solo scherzando.


È stato scritto in quei giorni bui (più di 3 anni fa) quando la funzionalità della tastiera era ancora piccola e, a dir poco, irrilevante.
Al giorno d'oggi, tuttavia, per quanto la memoria ricordi, ci sono funzioni standard per tracciare lo stato di una particolare chiave.
Quindi è improbabile che lo snippet di codice qui sotto sia di qualche utilità:

dove:
lparam - codice del tasto premuto nell'evento corrente;
last_key_code - codice del tasto premuto nell'evento precedente;
g_first_key - codice del primo tasto della combinazione;
g_second_key - codice del secondo tasto della combinazione;
tempo - tempo dell'evento corrente della pressione del tasto;
last_time_code - tempo del precedente evento di pressione del tasto;
g_time_limit - tempo massimo tra la prima e la seconda pressione del tasto da considerare come una combinazione di tasti;

il mio gestore non risponde ad altri tasti quando viene premuto Ctrl, come si è aggirato questo?

È ora di andare qui:https://www.mql5.com/ru/forum/231958

 
Non so dove andare con questo problema, ma ultimamente quando si apre o si crea un nuovo file Metaeditor si blocca strettamente, devo rimuovere il compito e ricominciare, qualcuno può imbattersi e sapere cosa fare?
File:
err.png  132 kb
 
Andrii Djola:
Non so dove andare con questo problema, ma ultimamente quando si apre o si crea un nuovo file Metaeditor si blocca strettamente, devo rimuovere il compito ed eseguirlo di nuovo, qualcuno può affrontare questo problema e sapere cosa fare?

Buon pomeriggio!

Quale versione del terminale e quale sistema operativo hai installato?

 
Evgeny Chernyshev:

Buon pomeriggio!

Quale versione del terminale e quale sistema operativo hai installato?

Win 10 x64

MT5 build 1755 del 29.01.2018

 
C'è un modo per compilare il file sorgente selezionato separatamente (come prima) piuttosto che il progetto?
 

Mi sto allenando o deve essere così ?????

   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:

Sto lavorando troppo o deve essere così ?????

Questo è corretto (int divide per int, int risulta in double):

 double t   = 280/60;
 
Sergey Dzyublik:

Esatto (int diviso per int, risultato int convertito in double):

Grazie!

 
 

Ho capito bene che questo esempio nell'aiuto non funziona?

//+------------------------------------------------------------------+ 
//| 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); 
     } 
  } 

A parte ctrl e shift e lo scorrimento, nessun altro pulsante funziona .....