Fehler, Irrtümer, Fragen - Seite 1088
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Nach der Neukompilierung des Indikators trat bei der Arbeit mit dynamischen Ar rays der Fehler "array out of range" auf.
Das hat es vorher nicht gegeben. Was ist zu tun?
Wenn Sie ähnliche Zeilen am Anfang der Datei haben
#include <Datei.mqh> , diese Include-Dateien sind höchstwahrscheinlich seit der letzten Kompilierung geändert worden, von Ihnen oder von jemand anderem.
Wenn Sie ähnliche Zeilen am Anfang Ihrer Datei haben
#include <File.mqh>, ist es wahrscheinlich, dass diese Include-Dateien seit der letzten Kompilierung geändert wurden, von Ihnen oder von jemand anderem.
Es gibt keine Include-Dateien.
Es gibt keine Plug-in-Dateien.
Warum sollte ein"Array out of range"-Fehler überhaupt auftreten, wenn man versucht, etwas in ein dynamisches Array zu setzen? Es handelt sich um ein dynamisches Array.
Array B1[] Als entsprechender Indikatorpuffer eingestellt
SetIndexBuffer(0,B1,INDICATOR_DATA); ArraySetAsSeries(B1,true);
Die Größe des Arrays ist hier eindeutig nicht benutzergesteuert.
Warum sollte ein"Array out of range"-Fehler überhaupt auftreten, wenn man versucht, etwas in ein dynamisches Array zu setzen? Es ist eine dynamische Anordnung.
Warum sollte ein"Array out of range"-Fehler überhaupt auftreten, wenn man versucht, etwas in ein dynamisches Array einzugeben? Es ist dynamisch.
(fcplm)
Wer wird ihn einsperren? Er ist ein Denkmal!
Plattform-Fehler.
Wenn beim Füllen des B1-Arrays des Indikatorpuffers die Prozedur SetIndexBuffer(0,B1,INDICATOR_DATA) wiederholt aufgerufen wird,
Wenn zum Beispiel der Indikator initialisiert wird, führt der nächste Versuch, etwas in das Array B1 zu schreiben, zu dem Fehler"Array out of range".
Wenn Sie die Prozedur SetIndexBuffer(0,B1,INDICATOR_DATA) einmal aufrufen, funktioniert alles einwandfrei.
So etwas gab es früher nicht.
Plattform-Fehler.
Wenn beim Füllen des B1-Arrays des Indikatorpuffers die Prozedur SetIndexBuffer(0,B1,INDICATOR_DATA) wiederholt aufgerufen wird,
Wenn beispielsweise der Indikator initialisiert wird, führt der nächste Versuch, etwas in das Array B1 zu schreiben, zu dem Fehler"Array out of range".
Wenn ein einzelner Aufruf der Prozedur SetIndexBuffer(0,B1,INDICATOR_DATA) erfolgt, funktioniert alles einwandfrei.
Das hat es vorher nicht gegeben.
Aber warum tun Sie das immer wieder?
Die Bindung eines Puffers bedeutet, dass er geleert und für die dynamische Bindung für nachfolgende Berechnungen vorbereitet wird. Wenn Sie die Funktion ein zweites Mal aufrufen, wird der vorherige Puffer geleert und erst beim nächsten Aufruf der Indikator-Neuberechnung wieder gefüllt.
Warum tun Sie das immer wieder?
Die Bindung des Puffers bedeutet, dass er geleert und auf die dynamische Bindung für die nächsten Berechnungen vorbereitet wird. Wenn Sie die Funktion ein zweites Mal aufrufen, wird der vorherige Puffer geleert und erst beim nächsten Aufruf der Indikator-Neuberechnung wieder gefüllt.
Dies war die standardmäßige vollständige Initialisierung des Indikators, die beim ersten Start des Indikators über Oninit() erfolgt.
Manchmal ist es auch notwendig, die Historie zu aktualisieren usw.
Niemand hat daran gedacht, dass die wiederholte Initialisierung des Indikators über Oninit() dazu führen würde, dass die Arrays nicht mehr reagieren.