Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1031

 
artmedia70:
Wenn durch das unbeabsichtigte Löschen des Indikators die von diesem Indikator angelegten globalen Variablen gelöscht werden sollen, sollte das Löschen dieser globalen Variablen in der OnDeinit()-Funktion des Indikators vorgeschrieben werden.
Es sollte überprüft werden, dass es sich nicht um einen Zeitrahmenwechsel handelt, sondern um das Löschen des Indikators aus dem Diagramm.
Ich danke Ihnen!
 
artmedia70:
Drücken Sie F3 im Terminal und löschen Sie diese Variable manuell. Sie wird einmal erstellt und befindet sich in der Umgebung - der EA liest sie von dort. Oder habe ich Sie vielleicht nicht richtig verstanden? Sie haben soeben die Erstellung einer globalen Variablen des Terminals im Indikatorcode selbst gelöscht, aber sie wurde zuvor von diesem Indikator erstellt?

Artem, bitte hilf mir zu verstehen, was los ist. Hier ist https://www.mql5.com/ru/code/10237 der Code des Expert Advisors, der über alle Handelsereignisse im Terminal benachrichtigt (oder besser gesagt benachrichtigen soll). Dieser Code hat ordnungsgemäß funktioniert. Ich war lange Zeit nicht mehr auf der Website. Einige Änderungen in mql4 sind aufgetreten und nun kompiliert dieser Code mit einem Fehler, wenn die Initialisierungszeilen des Arrays kompiliert werden. Wenn Sie die Zeit finden, schauen Sie es sich bitte an.

Herzliche Grüße.

PS: Wenn jemand anderes das Problem erkennen kann, wäre ich dankbar.

 
AlexeyVik:
Nun, ich weiß nicht, vielleicht in C++, das ich nie studiert habe, aber mql ist nur C-ähnlich. Und zweitens kann die Array-Dimension nicht auf eine Variable gesetzt werden, obwohl in Ihrem Beispiel MAX_NUM_ORDER vielleicht keine Variable ist...
siehe hier über die Initialisierung von Arrays https://book.mql4.com/ru/variables/arrays
 
SunnYtheDreamer:

Es wird eine Zeile bzw. eine Spalte des Arrays ausgewählt, dort kann ein bestimmter Wert eingegeben werden, d.h. die Eingabe sollte wie bei einer gewöhnlichen Variablen erfolgen, und um alle Werte zurückzusetzen

ArrayInitialize(Arr_Tickets, 0);



Der Verweis auf den Posten sieht wie folgt aus:Arr_Tickets[MAX_NUM_ORDER,2] =0;

Ich habe es hier -Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

 
valenok2003:
siehe hier über die Initialisierung von Arrays https://book.mql4.com/ru/variables/arrays
Ja, ich glaube, das Array ist global deklariert, also werde ich schlau...
 
valenok2003:

sieht der Verweis auf den Artikel wie folgt aus:Arr_Tickets[MAX_NUM_ORDER,2] =0;

Ich habe es geschrieben -Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

Arr_Tickets[MAX_NUM_ORDER,2] - Verweis auf ein Array-Element

Arr_Tickets[MAX_NUM_ORDER][2] - Array-Element-Referenz

Der Compiler flucht nicht, wie auch immer Sie es schreiben und wartet auf einen bestimmten Wert, nicht auf etwas anderes. Ich habe es extra überprüft.
Und eine Bestätigung desselben aus dem Link, den Sie einem anderen Forumsmitglied gegeben haben: die Art der Angabe von Indizes, bei der jeder der Indizes in eckige Klammern eingeschlossen ist, ist ebenfalls akzeptabel

 
SunnYtheDreamer:

Arr_Tickets[MAX_NUM_ORDER,2] - Verweis auf ein Array-Element

Arr_Tickets[MAX_NUM_ORDER][2] - Verweis auf ein Array-Element

Der Compiler flucht nicht, wie auch immer Sie es schreiben und wartet auf einen bestimmten Wert, nicht auf etwas anderes. Ich habe es extra überprüft.
Und eine Bestätigung desselben aus dem Link, den Sie einem anderen Forumsmitglied gegeben haben: die Art der Angabe von Indizes, bei der jeder der Indizes in eckige Klammern eingeschlossen ist, ist ebenfalls akzeptabel

Ich werde die Frage neu formulieren, - Es verwendet, um zu kompilieren und arbeiten gut, kann jemand erklären, was es verursacht? Die Codes, die nicht funktionierten, wurden nicht in die kodobase aufgenommen...

Übrigens, der Fehler tritt in den Zeilen 53 und 54 des Codes auf. Was ist in Zeile 54 falsch? Und wie initiiert man dann ein String-Array?

Ich habe das Lehrbuch durchsucht, aber ich habe nichts über String-Arrays gefunden, es gibt nur Informationen über numerische Arrays. Vielleicht habe ich nicht gründlich genug gesucht? Bitte stellen Sie mir den Link zur Verfügung.

 
valenok2003:

Artem, bitte hilf mir zu verstehen, was los ist. Hier ist https://www.mql5.com/ru/code/10237 der Code des Expert Advisors, der über alle Handelsereignisse im Terminal benachrichtigt (oder besser gesagt benachrichtigen soll). Dieser Code hat ordnungsgemäß funktioniert. Ich war lange Zeit nicht mehr auf der Website. Einige Änderungen in mql4 sind aufgetreten und nun kompiliert dieser Code mit einem Fehler, wenn die Initialisierungszeilen des Arrays kompiliert werden. Wenn Sie die Zeit finden, schauen Sie es sich bitte an.

Herzliche Grüße.

ps wenn jemand anderes das Problem sieht, wäre ich dankbar.

Erstens: Fügen Sie #property strict am Anfang des Codes ein und kompilieren Sie.

Das war so:

#property copyright "Copyright © valenok2003@mail.ru"
#property link      "http://bluedream.ucoz.ru"

dies zu tun:

#property copyright "Copyright © valenok2003@mail.ru"
#property link      "http://bluedream.ucoz.ru"
#property strict

Danach müssen Sie sich bereits die Fehler ansehen, die er ausgibt.

 
artmedia70:

Fügen Sie zunächst #property strict am Anfang des Codes ein und kompilieren Sie.

war so:

dies zu tun:

Danach müssen Sie sich die Fehler ansehen, die er ausgibt.

Eingefügt, hat sich nichts geändert.

Angenommen, ich kann die Zeile Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0} ersetzen; ich kann sie auch durchArrayInitialize(Arr_Tickets,0) ersetzen;

Was tun mit String Arr_Order_Symbol[MAX_NUM_SYMBOL] = {",",};? Wenn ich versuche, ein String-Array durchArrayInitialize(Arr_Order_Symbol,"") zu initialisieren, heißt es "my you don't understand...", es gibt kein geeignetes Objekt zur Verarbeitung durch diese Funktion...

 
valenok2003:

Eingefügt, hat sich nichts geändert.

Angenommen, ich kann die Zeile Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0} ersetzen; ich kann sie immer noch durchArrayInitialize(Arr_Tickets,0) ersetzen;

Was tun mit String Arr_Order_Symbol[MAX_NUM_SYMBOL] = {",",};? Wenn ich versuche, ein String-Array durchArrayInitialize(Arr_Order_Symbol,"") zu initialisieren, heißt es "my you don't understand...", es gibt kein geeignetes Objekt zur Verarbeitung durch diese Funktion...

Also, dieses Array auf Null setzen: ZeroMemory()