Diskussion zum Artikel "Die eigene, multi-threaded, asynchrone Web-Anfrage in MQL5" - Seite 6

 
Mihail Matkovskij:
Wie groß sollte der Offset (input int MessageBroadcast) für Benutzerereignisse sein, wenn UI-Elemente aus der Standardbibliothek(Include\Controls\) im Programm verwendet werden? Wie kann ich das herausfinden?

Ich bin kein großer Bibliotheksexperte. Nach der Definition von Ereignissen in der Datei Defines.mqh zu urteilen, ist der maximale reservierte Index dort 100.

 
Stanislav Korotky:

Ich bin kein großer Experte für diese Bibliothek. Nach der Definition von Ereignissen in der Datei Defines.mqh zu urteilen, ist der maximale reservierte Index dort 100.

//+------------------------------------------------------------------+
//| Ereignisse|
//+------------------------------------------------------------------+
#define  ON_CLICK                (0)   // Klicken auf das Kontrollereignis
#define  ON_DBL_CLICK            (1)   // Doppelklick auf Kontrollereignis
#define  ON_SHOW                 (2)   // Anzeige des Kontrollereignisses
#define  ON_HIDE                 (3)   // Ausblenden des Kontrollereignisses
#define  ON_CHANGE               (4)   // Änderung des Steuerereignisses
#define  ON_START_EDIT           (5)   // Beginn des Bearbeitungsvorgangs
#define  ON_END_EDIT             (6)   // Ende des Bearbeitungsvorgangs
#define  ON_SCROLL_INC           (7)   // Inkrement des Scrollbar-Ereignisses
#define  ON_SCROLL_DEC           (8)   // Dekrement des Scrollbar-Ereignisses
#define  ON_MOUSE_FOCUS_SET      (9)   // das Ereignis "Mauszeiger im Steuerelement"
#define  ON_MOUSE_FOCUS_KILL     (10)  // das Ereignis "Mauszeiger hat das Steuerelement verlassen".
#define  ON_DRAG_START           (11)  // das Ereignis "Start des Ziehens der Kontrolle"
#define  ON_DRAG_PROCESS         (12)  // das Ereignis "das Steuerelement wird gezogen
#define  ON_DRAG_END             (13)  // das Ereignis "Ende des Ziehens der Kontrolle"
#define  ON_BRING_TO_TOP         (14)  // das Ereignis "Mausereignisse erhöhen die Priorität".
#define  ON_APP_CLOSE            (100) // Ereignis "Schließen der Anwendung"

Offensichtlich haben die Entwickler von 15 bis 99 eine Reserve für neue Ereignis-IDs gelassen. Aber darüber hinaus ist mir noch eine weitere Konstante aufgefallen .

#define  CONTROLS_MAXIMUM_ID                 (10000)  // maximale Anzahl von IDs in der Anwendung

Maximale Anzahl oder maximale Anzahl von Id's in der Anwendung. Was kann das bedeuten...?

 
Mihail Matkovskij:

Offensichtlich haben die Entwickler von 15 bis 99 einen Spielraum für neue Id-Ereignisse gelassen. Aber darüber hinaus fiel mir noch eine andere Konstante auf.

Maximale Anzahl oder maximale Anzahl von IDs in der Anwendung. Was kann das bedeuten...?

Dem Wortlaut nach - Kontrollbezeichner. Steuerelemente sind keine Ereignisse.

 
Stanislav Korotky:

Den Worten nach zu urteilen - Kontrollkennungen. Steuerelemente sind keine Ereignisse.

Vielleicht... Aber es sagt nicht, welche Bezeichner. Ich habe MessageBroadcast 10000 eingestellt und alles funktioniert. Sie können sogar 1000000 und mehr einstellen, der ushort-Typ erlaubt es. Obwohl auch mit 100 wird es keine Konflikte. In jedem Fall hat jedes UI-Element seine eigene ID, die in den Bedingungen der Ereignisverarbeitung überprüft wird. Im Allgemeinen ist die Wahrscheinlichkeit eines normalen Betriebs recht hoch.

 
Es wäre schön, wenn der Hauptexperte die CPU-Auslastung ermitteln könnte, um zu wissen, wie viele Aufgaben zur Ausführung hinzugefügt werden können. Aber leider habe ich eine solche Funktion in der Dokumentation nicht gefunden.
 
Stanislav Korotky #:


Wie könnte dies jetzt, da es im MT5 Dienste gibt, gestaltet werden?

 
bot #:

Wie könnte das aussehen, jetzt, wo es Dienstleistungen im MT5 gibt?

Es ändert sich nichts, da es keinen einfacheren Weg gibt, mit einem MT5-Dienst zu kommunizieren.
 

Wirklich schöner Artikel.

Allerdings bekomme ich Probleme beim Versuch, mit metatrader 5 zu kompilieren.

Initialisierungssequenz für Array erwartet:

in Vorlage 'const TYPETOBYTES::STRUCT_TYPE<T> TYPETOBYTES::FillBytes(const uchar)' angegeben mit [T=uchar] TypeToBytes.mqh 314 31

Ich verstehe, dass es ein Problem bei der Initialisierung des Arrays ist. Ich könnte versuchen, es zu beheben. Allerdings sehe ich keinen Bericht über dieses Problem und frage mich, ob das Problem nur bei mir selbst auftritt.

Vielen Dank für den Artikel, er ist auf jeden Fall wunderbar!



 
magnomilk #:

Wirklich schöner Artikel.

Allerdings bekomme ich Probleme, wenn ich versuche, mit metatrader 5 kompilieren.

Initialise Sequenz für Array erwartet:

in Vorlage 'const TYPETOBYTES::STRUCT_TYPE<T> TYPETOBYTES::FillBytes(const uchar)' angegeben mit [T=uchar] TypeToBytes.mqh 314 31

Ich verstehe, dass es ein Problem bei der Initialisierung des Arrays ist. Ich könnte versuchen, es zu beheben. Ich sehe jedoch keinen Bericht über dieses Problem und frage mich, ob das Problem nur bei mir selbst auftritt.

Vielen Dank für den Artikel sowieso, wunderbar sowieso!



Stellen Sie sicher, dass Sie die neueste TypeToBytes-Bibliothek verwenden.

 
Igor K "WebRequest error code 4002"....


MetaTrader 5

Version: 5.00 build 2093

02 Jul 2019


===Hier schneiden===

2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) Accepted: aQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::USDJPY_PERIOD_H1_2_128968169154443359 after 0 retries

2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) WebRequest Fehlercode 4002

===Hier abschneiden===


Nur die Ports 80 (http) und 443 (https) sind für WebRequest zugelassen.