Fehler, Irrtümer, Fragen - Seite 2568

 
Artyom Trishkin:

(Bedingung1 und (Bedingung2 oder Bedingung3))

Dankeschön

 
Aleksandr Goryachev:

Dankeschön

Das Interessante daran ist, dass der Code genau dasselbe besagt.

 
Artyom Trishkin:

Das Interessante daran ist, dass der Code genau dasselbe besagt.

Ich wollte nur klarstellen, dass ich mich gefragt habe...

 

Ab einem bestimmten Build wird eine Funktion nicht mehr aus der Bibliothek exportiert (unaufgelöster Import):

typedef void (*pOnBookEvent)(const string &symbol);

void OrderBook_Init(pOnBookEvent ptr, const string folder, const bool common, const int offset) export

Dies ist auf einen durch typedef definierten Parameter zurückzuführen. Wenn sie entfernt wird, funktioniert der Export. Wie und was hat sich bei MQ geändert? Wahrscheinlich etwas mit Typedefs? Es stellte sich heraus, dass beim Erstellen der Bibliothek im vorherigen Build die Signatur des Parameters eine war, aber beim Kompilieren des EA, der die Bibliothek im neuen Build verwendet, ist die Signatur anders.

Zur Klarstellung: Die Änderung erfolgte zwischen 2007 und 2085. Eine Suche in den Versionshinweisen hat keine Antwort ergeben.

 
Vict:

0x20

Ist es möglich, so etwas in diesem Beispiel zu tun?
Das heißt, ein numerisches Char-Array wird mit einem leeren Wert initialisiert, nicht mit Null.

char Arr[];
ArrayResize(Arr, 5);
ArrayInitialize(Arr, '\0');
   
for(int i=0; i<5; i++)
   Print(Arr[i]);
 
Roman:

Ist es möglich, so etwas in diesem Beispiel zu tun?
Das heißt, ein numerisches Char-Array wird mit einem leeren Wert initialisiert, nicht mit Null.

Ich wüsste nicht, warum nicht
 
Vict:
Ich sehe keine Hindernisse.

Es gibt ein Hindernis.

ArrayInitialize(Arr, ' ');

Initialisiert mit Nummer 32
Soweit ich verstanden habe, gibt es keinen anderen leeren Wert für ein Zeichen als "\0".
Aber dieses Zeichen initialisiert das Array mit Nullen.
Die Frage war, ob es möglich ist, mit einem leeren Wert zu initialisieren, nicht mit Null.

 
Roman:

Es gibt ein Hindernis.

Initialisiert mit Nummer 32
Soweit ich weiß, gibt es keinen anderen leeren Wert für ein Zeichen als "\0".
Aber dieses Zeichen initialisiert das Array mit Nullen.
Die Frage war, ob es möglich ist, mit einem leeren Wert zu initialisieren, nicht mit Null.

Sehen Sie. Wenn Sie das Array char a[100] deklarieren, bedeutet das eigentlich, dass 100 Bytes auf dem Stack zugewiesen wurden, das war's, sie sind da und haben Werte von 0x0 bis 0xff
 
Vladimir Simakov:
Sehen Sie. Wenn Sie char a[100] als Array deklarieren, bedeutet das, dass 100 Bytes auf dem Stack zugewiesen werden, das war's, sie sind da und haben Werte von 0x0 bis 0xff

Ja, und sie enthält Müll.

char a[100];
   
for(int i=0; i<100; i++)
   Print(a[i]);

Die Frage war eine ganz andere. Sie mit einem leeren Wert zu initialisieren, nicht mit Null. Wenn so etwas überhaupt möglich ist.
Null ist eine Zahl! Ein leerer Wert, wie ich ihn verstehe, keine Zahlen, nichts.
Aber die Speicherzellen werden mit dieser Leere initialisiert ))

 

MT5 Build 2145 vom 17. September 2019.

Wenn der Tester startet, wird der lokale Netzwerkagenten-Cluster automatisch deaktiviert. Wenn es zwangsweise eingeschaltet wird, schaltet es sich beim nächsten Start des Prüfgeräts zwangsweise wieder aus.

Ich habe es so satt, dass sich das Problem ein halbes Jahr lang hinzieht, wenn plötzlich die Hälfte der Agenten den Job nicht mehr annimmt und man sie immer wieder zwingen muss, zu gehen,

und jetzt muss ich die lokalen Agenten jedes Mal einschalten, wenn das Testgerät startet.