Fehler, Irrtümer, Fragen - Seite 2242

 
darkangel8733:

Hallo, ich habe einen EA von Ihnen gekauft, "turtle". und es funktioniert nicht im Standalone-Modus.

Ich meine ja nur. Wenn ein Expert Advisor Indikatoren, auch Standardindikatoren, verwendet, sollte er Zugriff auf diese haben. Diese Faustformel habe ich bereits eingeführt.

 
A100:
Die Forderung war nur eine - zu helfen, nicht zu behindern. Wenn Sie die Diskussion für unnötig halten - lassen Sie sich nicht darauf ein... Es ist nicht an Ihnen, darüber zu entscheiden (notwendig/unnötig) - dafür sind die Verwaltung und die Moderatoren zuständig

Ich stimme zu, aber wenn Sie Ratschläge nicht mögen, dann sollten Sie nicht darauf reagieren, dann gibt es keine Fragen... jeder schreibt hier, was er für angemessen hält, ich hielt es für angebracht, Ratschläge zu geben, d.h. kostenlose Hilfe anzubieten, statt Dankbarkeit lese ich Beschwerden... viel Glück

 
Konstantin:

Ich stimme zu, aber wenn Ihnen der Rat nicht gefällt, brauchen Sie nicht darauf zu antworten.

Das ist ein guter Ratschlag... danke dafür... Ich nehme es an.
 

Wie das?

ArrayFree(SummArr);
ArrayResize(SummArr,57);
Print("SummArr_1=",SummArr[1]);
2018.07.26 02:09:04.566 Pred_Ocenka_02 (Si Splice,M1)   SummArr_1=1190264832

Warum ist der Wert des Arrays nicht leer (Null)?

 
Aleksey Vyazmikin:

Wie das?

Warum ist der Wert des Arrays nicht leer (Null)?

Was ist, wenn die Größe zuerst bestimmt und dann gelöscht wird?

 
Vitaly Muzichenko:

Was ist, wenn die Größe zuerst bestimmt und dann gelöscht wird?

Dann

2018.07.26 02:20:08.482 Pred_Ocenka_02 (Si Splice,M1)   array out of range in 'Pred_Ocenka_02.mq5' (76,27)
Nach der Löschung gibt es keine Größeninformationen.
 
Wenn
ArrayFree(SummArr);

Entfernen, dann ist der Wert auch nicht leer. Das Feld wurde bisher noch nicht verwendet.

 

Etwas Unsinn, hier ist der Code im Allgemeinen geschnitten

int SummArr[];

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ArrayFree(SummArr);
   ArrayResize(SummArr,57);
   Print("SummArr_1=",SummArr[1]);
   Print("SummArr_30=",SummArr[30]);   
   Print("SummArr_57=",SummArr[56]);   
  }
//+------------------------------------------------------------------+

Am Ausgang.

2018.07.26 02:37:58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_1=1190264832
2018.07.26 02:37:58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_30=2097181
2018.07.26 02:37:58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_57=154252694

Bitte überprüfen Sie es, vielleicht ist mein Terminal verrückt geworden.

Oder ist das normal, und alles sollte Müll sein?

 

Der Code im mql4-Indikator funktioniert nicht mehr. Wie kann ich ihn reparieren?

else{// Иначе стрелка создана. Задаём её свойства
 ObjectSetInteger(Open_name,OBJPROP_ARROWCODE,OpenArrowCode);//код стрелки 232 
 ObjectSet(Open_name,OBJPROP_COLOR,ObjColor);//цвет стрелки
}

Editor sagt 'ObjectSetInteger' - keine der Überladungen kann auf den Funktionsaufruf angewendet werden

Es hat jahrelang funktioniert und dann plötzlich aufgehört. Das ist eine Schande.


 
Aleksey Vyazmikin:

Etwas Unsinn, hier ist der Code im Allgemeinen geschnitten

Am Ausgang.

Bitte überprüfen Sie es, vielleicht ist mein Terminal verrückt geworden.

Oder ist das vielleicht normal und alles ist Müll?

Gibt den Puffer eines beliebigen dynamischen Arrays frei und setzt die Größe der Dimension Null auf 0.

Wenn Sie Skripte und Indikatoren schreiben, müssen Sie die Funktion ArrayFree() nicht sehr oft verwenden, da der gesamte verwendete Speicher sofort freigegeben wird, wenn das Skript aufhört zu arbeiten, und in benutzerdefinierten Indikatoren wird die Hauptarbeit mit Arrays durch den Zugriff auf Indikatorpuffer durchgeführt, deren Größe automatisch vom Exekutivsubsystem des Terminals verwaltet wird.

Wenn Sie den Speicher unter komplexen dynamischen Bedingungen selbst verwalten müssen, können Sie mit der Funktion ArrayFree() den von einem dynamischen Array belegten Speicher, den Sie nicht benötigen, explizit und sofort freigeben.

Siehst du? Unnötig.

Natürlich kann niemand für den Inhalt garantieren, wenn der Speicher erst einmal freigegeben wurde und Sie ihn dann durch Größenänderung des Arrays erneut zuweisen.

Array-Initialisierung verwenden: ArrayInitialize()

Grund der Beschwerde: