Errori, bug, domande - pagina 2528

 
Chi sa come contattare il moderatore? O forse qualcuno può darmi un suggerimento? Le mie statistiche mostrano una ricarica, anche se non c'è mai stata. Che cos'è e come risolvere il problema?
 

Questo comportamento è corretto?

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

//|                                                                  |

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

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

Previsto

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

Poiché diverse istanze di classi sono dichiarate

 
Vladimir Pastushak:

Questo comportamento è corretto?

naturalmente
 
TheXpert:
naturalmente

Quindi le variabili statiche sono visibili al di fuori dei loro oggetti?

 
Vladimir Pastushak:

Quindi le variabili statiche sono visibili al di fuori dei loro oggetti?

E se fosse così, che senso avrebbe la statica?

class name{
  int t=0;
public:
   int func() {
     return t++;
   }
};
 
Tutti sono invitati a partecipare al thread sui test della CPU per l'ottimizzazione.
 

Salve,

Ho notato un bug replicato su diversi broker in MT5 2085.


1) Se il rettangolo ha una data di fine nel futuro (per esempio 2020), scomparirà dallo schermo quando si fa lo zoom fuori, quando si fa lo zoom verso il basso riapparirà.

2) Se un grafico ha barre con date a partire dal futuro, (ad esempio un grafico in tick personalizzato dove le barre iniziano a ottobre 2019), allora è impossibile disegnarci sopra, quando seleziono una linea e un rettangolo e clicco sul grafico e disegno non succede nulla. Poi si scopre che l'oggetto è stato disegnato storto.


Per favore, cerca di capire cosa c'è che non va e risolvi l'errore. Posso fare un video se necessario. Grazie!

 
Per favore, aiutatemi a scoprirlo. Il seguente codice nel tester apre la finestra di caricamento dei file impostati chiamando il menu corrispondente.
#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);
*/  
}

Questo codice funziona bene quando la scheda Opzioni è selezionata nel Tester. Quindi il commento evidenziato nel codice SendMessage restituisce 1.

Ma se si cambia la scheda, il menu viene chiamato, ma non seleziona la voce "Load" - SendMessage restituisce 0. Allo stesso tempo manualmente nel menu aperto è possibile selezionare la voce senza problemi.

Puoi dirmi dov'è il problema, che SendMessage restituisce zero?

 

Ciao a tutti!

Ho affittato un VPS e ho smesso di copiare i segnali. Quando scollego il VPS, tutto funziona. Il registro dà errori. A cosa può essere collegato?

2019.08.12 23:03:18.632 MQL5.community: autorizzazione fallita

2019.08.12 23:03:18.632 Segnale: '77060013': failed to get list of signals, connection error

File:
 

Domanda sui caratteri ammissibili negli identificatori. Esempio

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

Il risultato:

Ricevuto un identificatore di variabile con uno spazio.

Se riscriviamo l'esempio in questo modo:

#define  MACRO( x )              x##:AAA
void OnStart()
{
        { int MACRO( BBB ); } //(1) //нормально
        { int BBB:AAA;      } //(2) //Error: 'AAA' - semicolon expected
}
allora possiamo formulare una contraddizione: Qual è la differenza tra (1) e (2)?