Errores, fallos, preguntas - página 2528

 
¿Quién sabe cómo contactar con el moderador? ¿O tal vez alguien pueda darme una pista? Mis estadísticas muestran una recarga, aunque nunca la hubo. ¿Qué es y cómo solucionarlo?
 

¿Es correcto este comportamiento?

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

//|                                                                  |

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

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

Se espera

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

Dado que se declaran diferentes instancias de clases

 
Vladimir Pastushak:

¿Es correcto este comportamiento?

por supuesto
 
TheXpert:
por supuesto

¿Así que las variables estáticas son visibles fuera de sus objetos?

 
Vladimir Pastushak:

¿Así que las variables estáticas son visibles fuera de sus objetos?

Y si fuera a tu manera, ¿qué sentido tendría la estática?

class name{
  int t=0;
public:
   int func() {
     return t++;
   }
};
 
Todo el mundo es bienvenido a participar en el hilo sobre las pruebas de la CPU para su optimización.
 

Hola,

Se ha detectado un error replicado en varios brokers en MT5 2085.


1) Si el rectángulo tiene una fecha de finalización en el futuro (por ejemplo, 2020), desaparecerá de la pantalla cuando se aleje, cuando se acerque hacia abajo volverá a aparecer.

2) Si un gráfico tiene barras con fechas del futuro, (por ejemplo, un gráfico de ticks personalizado donde las barras comienzan en octubre de 2019), entonces es imposible dibujar en él, cuando selecciono una línea y un rectángulo y hago clic en el gráfico y dibujo no pasa nada. Entonces resulta que el objeto se ha dibujado torcido.


Por favor, averigüe qué es lo que falla y solucione el error. Puedo hacer un video si es necesario. Gracias.

 
Por favor, ayúdenme a averiguarlo. El siguiente código en el probador abre la ventana de carga de archivos establecidos llamando al menú correspondiente.
#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 bien cuando se selecciona la pestaña Opciones en el Comprobador. Entonces el comentario resaltado en el código SendMessage devuelve 1.

Pero si se cambia la pestaña, el menú se llama, pero no selecciona el elemento "Cargar" - SendMessage devuelve 0. Al mismo tiempo manualmente en el menú abierto es posible seleccionar el elemento sin problemas.

¿Puedes decirme dónde está el problema, que SendMessage devuelve cero?

 

Hola a todos.

Alquilé un VPS y dejé de copiar señales. Cuando desconecto el VPS, todo funciona. El registro da errores. ¿Con qué puede estar relacionado?

2019.08.12 23:03:18.632 MQL5.community: autorización fallida

2019.08.12 23:03:18.632 Señal: '77060013': ha fallado la obtención de la lista de señales, error de conexión

Archivos adjuntos:
 

Pregunta sobre los caracteres permitidos en los identificadores. Ejemplo

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

El resultado:

Recibió un identificador de variable con un espacio.

Si reescribimos el ejemplo así:

#define  MACRO( x )              x##:AAA
void OnStart()
{
        { int MACRO( BBB ); } //(1) //нормально
        { int BBB:AAA;      } //(2) //Error: 'AAA' - semicolon expected
}
entonces podemos formular una contradicción: ¿Cuál es la diferencia entre (1) y (2)?
Razón de la queja: