Erros, bugs, perguntas - página 2169

 
Sergey Dzyublik:

Se o meu posto com a promessa de encontrar o código antigo foi apagado, significa que não prometi nada...
Estava a brincar.


Foi escrito naqueles dias escuros (há mais de 3 anos), quando a funcionalidade do teclado ainda era pequena e, para o dizer de uma forma suave, pouco notável.
Hoje em dia, no entanto, no que diz respeito à memória, existem características padrão para acompanhar o estado de uma determinada chave.
Assim, é pouco provável que o trecho de código abaixo seja de alguma utilidade:

onde:
lparam - código da tecla pressionada em evento corrente;
último_código_chave - código da tecla pressionada no evento anterior;
g_first_key - código da primeira chave da combinação;
g_second_key - código da segunda chave da combinação;
hora - hora do evento actual da pressão da tecla;
último_código_tempo - hora do evento de imprensa de tecla anterior;
g_time_limit - tempo máximo entre a primeira e a segunda prensa de chaves a ser considerado como uma combinação de chaves;

o meu manipulador não responde a outras teclas quando o Ctrl é pressionado, como é que isto se deu a volta?

Está na hora de ir aqui:https://www.mql5.com/ru/forum/231958

 
Não sei para onde ir com este problema, mas ultimamente quando se abre ou se cria um novo ficheiro o Metaeditor fica pendurado firmemente, tenho de remover a tarefa e começar de novo, será que alguém se pode deparar e saber o que fazer?
Arquivos anexados:
err.png  132 kb
 
Andrii Djola:
Não sei aonde ir com este problema, mas ultimamente quando se abre ou se cria um novo ficheiro, o Metaeditor fica pendurado, tenho de remover a tarefa e executá-la novamente, pode alguém enfrentar este problema e saber o que fazer?

Boa tarde!

Qual a versão do terminal e qual o SO que tem instalado?

 
Evgeny Chernyshev:

Boa tarde!

Qual a versão do terminal e qual o SO que tem instalado?

Ganhar 10 x64

MT5 build 1755 datado de 29.01.2018

 
Existe alguma forma de compilar o ficheiro-fonte seleccionado separadamente (como antes) em vez do projecto?
 

Estou a trabalhar ou é suposto ser assim ?????

   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:

Estou a trabalhar demasiado ou é suposto ser assim ?????

Isto é correcto (int divide por int, int resulta em duplo):

 double t   = 280/60;
 
Sergey Dzyublik:

É isso mesmo (int dividido por int, int resultado convertido para o dobro):

Obrigado!

 
 

Compreendo correctamente que este exemplo na ajuda não funciona?

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

Para além de ctrl e shift e rolagem nenhum outro botão funciona .....

Razão: