Fehler, Irrtümer, Fragen - Seite 2528

 
Wer weiß, wie man den Moderator kontaktieren kann? Oder kann mir vielleicht jemand einen Tipp geben? Meine Statistik zeigt eine Auffüllung an, obwohl es nie eine gab. Woran liegt es und wie kann man es beheben?
 

Ist dieses Verhalten korrekt?

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

//|                                                                  |

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

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

Erwartet

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

Da verschiedene Instanzen von Klassen deklariert werden

 
Vladimir Pastushak:

Ist dieses Verhalten korrekt?

natürlich
 
TheXpert:
natürlich

Statische Variablen sind also außerhalb ihrer Objekte sichtbar?

 
Vladimir Pastushak:

Statische Variablen sind also außerhalb ihrer Objekte sichtbar?

Und wenn es nach Ihnen ginge, was wäre dann der Sinn von Statik?

class name{
  int t=0;
public:
   int func() {
     return t++;
   }
};
 
Jeder ist herzlich eingeladen, sich an dem Thread über CPU-Tests zur Optimierung zu beteiligen.
 

Hallo,

Ich habe einen Fehler festgestellt, der bei mehreren Brokern im MT5 2085 repliziert wurde.


1) Wenn das Rechteck ein Enddatum in der Zukunft hat (z.B. 2020), verschwindet es beim Herauszoomen vom Bildschirm, beim Hineinzoomen erscheint es wieder.

2) Wenn ein Diagramm Balken mit Daten aus der Zukunft enthält (z. B. ein benutzerdefiniertes Tick-Diagramm, bei dem die Balken im Oktober 2019 beginnen), ist es nicht möglich, darauf zu zeichnen. Wenn ich eine Linie und ein Rechteck auswähle und auf das Diagramm klicke und zeichne, passiert nichts. Dann stellt sich heraus, dass das Objekt schief gezeichnet wurde.


Bitte finden Sie heraus, was falsch ist und beheben Sie den Fehler. Bei Bedarf kann ich ein Video machen. Ich danke Ihnen!

 
Bitte helfen Sie mir, es herauszufinden. Der folgende Code im Tester öffnet das Fenster zum Laden der eingestellten Datei durch Aufruf des entsprechenden Menüs.
#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);
*/  
}

Dieser Code funktioniert gut, wenn die Registerkarte Optionen im Tester ausgewählt ist. Dann gibt der hervorgehobene Kommentar im Code SendMessage 1 zurück.

Wechselt man jedoch die Registerkarte, wird das Menü zwar aufgerufen, aber der Eintrag "Laden" wird nicht ausgewählt - SendMessage gibt 0 zurück. Gleichzeitig kann man im geöffneten Menü den Eintrag problemlos manuell auswählen.

Können Sie mir sagen, wo das Problem liegt, dass SendMessage Null zurückgibt?

 

Hallo zusammen!

Ich mietete einen VPS und hörte auf, Signale zu kopieren. Wenn ich den VPS vom Stromnetz trenne, funktioniert alles. Log gibt Fehler aus. Womit kann sie in Verbindung gebracht werden?

2019.08.12 23:03:18.632 MQL5.community: Autorisierung fehlgeschlagen

2019.08.12 23:03:18.632 Signal: '77060013': Liste der Signale kann nicht abgerufen werden, Verbindungsfehler

Dateien:
 

Frage nach zulässigen Zeichen in Bezeichnern. Beispiel

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

Das Ergebnis:

Empfing einen Variablenbezeichner mit einem Leerzeichen.

Wenn wir das Beispiel wie folgt umschreiben:

#define  MACRO( x )              x##:AAA
void OnStart()
{
        { int MACRO( BBB ); } //(1) //нормально
        { int BBB:AAA;      } //(2) //Error: 'AAA' - semicolon expected
}
dann können wir einen Widerspruch formulieren: Was ist der Unterschied zwischen (1) und (2)?