Erros, bugs, perguntas - página 2528

 
Quem sabe como contactar o moderador? Ou talvez alguém me possa dar uma dica? As minhas estatísticas mostram uma recarga, apesar de nunca ter havido nenhuma. O que é e como consertá-lo?
 

Este comportamento é correcto?

//+------------------------------------------------------------------+

//|                                                                  |

//+------------------------------------------------------------------+

class name

  {

public:

   int func()

     {

      static int t=0;

      t++;

      return t;

     }

  };

name A,B;

//+------------------------------------------------------------------+

void OnInit()

  {

   Print("A "+A.func());

   Print("B "+B.func());

  }

//+------------------------------------------------------------------+

/*

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) A 1

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) B 2

Esperado

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) A 1

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) B 1

Uma vez que são declarados diferentes exemplos de classes

 
Vladimir Pastushak:

Este comportamento é correcto?

é claro
 
TheXpert:
é claro

Assim, as variáveis estáticas são visíveis fora dos seus objectos ?

 
Vladimir Pastushak:

Assim, as variáveis estáticas são visíveis fora dos seus objectos ?

E se fosse à sua maneira, qual seria o objectivo da estática?

class name{
  int t=0;
public:
   int func() {
     return t++;
   }
};
 
Todos são bem-vindos a participar no tópico sobre testes de CPU para optimização.
 

Olá,

Notou-se um bug replicado em vários corretores no MT5 2085.


1) Se o rectângulo tiver uma data de fim no futuro (por exemplo, 2020), desaparecerá do ecrã quando for ampliado, quando for ampliado para baixo, reaparecerá.

2) Se um gráfico tiver barras com datas do futuro, (por exemplo, um gráfico personalizado onde as barras começam em Outubro de 2019), então é impossível desenhar nele, quando selecciono uma linha e um rectângulo e clico no gráfico e desenho nada acontece. Acontece então que o objecto foi desenhado de forma torta.


Por favor, descubra o que está errado e corrija o erro. Posso fazer um vídeo, se necessário. Obrigado!

 
Por favor, ajude-me a descobri-lo. O seguinte código no testador abre a janela de carregamento do set-file ao chamar o menu correspondente.
#include <WinAPI\winuser.mqh>

#define  GA_ROOT           0x00000002

#define  WM_COMMAND                     0x0111
#define  WM_CONTEXTMENU     0x007B

#define  DTM_SETSYSTEMTIME 0x1002

#define  MN_GETHMENU     0x01E1  

#define  PRINT(x) ; Print(#x, ":", string(x))
#define  PRINT64(x) ; printf("%s%s%#.08x", #x, ":", x)

long GetHandle(long handle, int &controls[]){
   long next_handle = handle;                                                                        
   for (int i = 0; i < ArraySize(controls); i++){
      next_handle = user32::GetDlgItem(next_handle, controls[i]);
      PRINT64(next_handle);
   }           
   return next_handle;                
} 

void OnStart(){
  long RootHandle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT);
  PRINT64(RootHandle);  
  
  int controls[] = {0xE81E, 0x804E, 0x28EF, 0x28FE}; 
  long handle = GetHandle(RootHandle, controls);
  PRINT64(handle);
  
  
//  PRINT(user32::SendMessageW(handle, WM_CONTEXTMENU, 0, -1));
  PRINT(user32::PostMessageW(handle, WM_CONTEXTMENU, 0, -1));
  PRINT("Sleep");
  Sleep(1000);

  const long hpopup=user32::FindWindowW("#32768", NULL);
  PRINT64(hpopup);

  const long hmenu = user32::SendMessageW(hpopup, MN_GETHMENU,0,0);
  PRINT64(hmenu);
  
  uint id=user32::GetMenuItemID(hmenu, 0);
  PRINT64(id);
  
  PRINT(user32::SendMessageW(RootHandle,WM_COMMAND,id,0)); // Выбор пункта меню "Загрузить"
/*
  Sleep(100);
  
  const long hwnd = GetLastActivePopup(RootHandle);
  PRINT64(hwnd);
*/  
}

Este código funciona bem quando o separador Opções é seleccionado no Testador. Depois o comentário destacado no código SendMessage retorna 1.

Mas se alterar o separador, o menu é chamado, mas não selecciona o item "Load" - SendMessage retorna 0. Ao mesmo tempo, é possível seleccionar o item manualmente no menu aberto, sem qualquer problema.

Pode dizer-me onde está o problema, que o SendMessage devolve zero?

 

Olá a todos!

Aluguei um VPS e parei de copiar sinais. Quando desconecto o VPS, tudo funciona. O registo dá erros. A que pode estar relacionado?

2019.08.12 23:03:18.632 MQL5.community: autorização falhou

2019.08.12 23:03:18.632 Sinal: '77060013': não conseguiu obter a lista de sinais, erro de ligação

Arquivos anexados:
 

Pergunta sobre caracteres admissíveis em identificadores. Exemplo

#define  MACRO( x )              x## AAA
void OnStart()
{
        int xyz;
        int MACRO( BBB ); //нормально
}

O resultado:

Recebeu um identificador variável com um espaço.

Se reescrevermos o exemplo desta forma:

#define  MACRO( x )              x##:AAA
void OnStart()
{
        { int MACRO( BBB ); } //(1) //нормально
        { int BBB:AAA;      } //(2) //Error: 'AAA' - semicolon expected
}
então podemos formular uma contradição: Qual é a diferença entre (1) e (2)?