Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1001

 

Können Sie mir bitte sagen, warum ich Fehler erhalte

2019.02.17 06:13:28.974 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02.17 06:13:28.983 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден

in diesem Code

      if(ObjectFind(chart,name)<0)
        {
         Print("1 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
         graphic.Create(chart,name,0,0,0,pix_X,pix_Y);//Создает графический ресурс, привязанный к объекту чарта 
         Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
        }

Wenn der erste Fehler noch verständlich ist - ein Objekt wird nicht gefunden, aber die Durchführung der Suche nach einem fehlenden Objekt ohne Fehler ist nicht klar, der zweite Fehler ist nicht klar, während das Objekt eindeutig erstellt wird - das Diagramm wird gebildet und der Grund für den Fehler ist nicht klar.

Wie werden Sie Fehler los?

 
Aleksey Vyazmikin:

Können Sie mir bitte sagen, warum ich Fehler erhalte

in diesem Code

Wenn der erste Fehler noch verständlich ist - ein Objekt wird nicht gefunden, aber die Durchführung der Suche nach einem fehlenden Objekt ohne Fehler ist nicht klar, der zweite Fehler ist nicht klar, während das Objekt eindeutig erstellt wird - das Diagramm wird gebildet und der Grund für den Fehler ist nicht klar.

Wie lässt sich der Fehler beheben?

ResetLastError() muss vor dem Aufruf der Funktion ausgeführt werden. Was gibt es hier:

graphic.Create()

ist unklar. Wenn es sich um CCanvas handelt, erstellt die Methode Create() eine grafische Ressource ohne Bezug zum Diagrammobjekt. Und sie gibt entweder true oder false zurück:

erstellen.

Erzeugt eine grafische Ressource ohne Bindung an ein Diagrammobjekt.

virtual bool  Create(
   const string       name,                                 // имя
   const int          width,                                // ширина
   const int          height,                               // высота
   ENUM_COLOR_FORMAT  clrfmt=COLOR_FORMAT_XRGB_NOALPHA      // формат
   );

Parameter

Name

[in] Basis für den Namen der grafischen Ressource. Der Ressourcenname wird bei der Erstellung durch Hinzufügen einer Pseudo-Zufallszeichenfolge gebildet.

Breite

Breite [in] Breite (X-Größe) in Pixel.

Höhe

[in] Höhe (Größe der Y-Achse) in Pixel.

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

[in] Farbverarbeitungsmethode. Siehe die Beschreibung der Funktion ResourceCreate() für weitere Einzelheiten zu den Methoden der Farbbehandlung.

Der Rückgabewert ist

true - wenn erfolgreich, sonst false


Im Allgemeinen ist es schwer zu verstehen, was Sie gezeigt haben.

Aber Sie können es auf diese Weise versuchen:

//+------------------------------------------------------------------+
ResetLastError();
if(ObjectFind(chart,name)<0)
  {
   Print("1 Тут ошибка потому, что объекта нет ещё",GetLastError()," ",cLng::CodeDescription(GetLastError()));
   ResetLastError();
   if(!graphic.Create(chart,name,0,0,0,pix_X,pix_Y))
      Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
  }
//+------------------------------------------------------------------+

Wenn Sie CGraphic dort haben, müssen Sie in den Create()-Code einsteigen, um zu verstehen, was er zurückgibt, denn in der Hilfe steht kein Wort darüber:

Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic / Create
Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic / Create
  • www.mql5.com
Стандартная библиотека / Научные графики / CGraphic / Create - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

ResetLastError() muss durchgeführt werden, bevor die Funktion aufgerufen wird. Was es hier gibt:

ist unklar. Wenn es sich um CCanvas handelt, erstellt die Methode Create() eine grafische Ressource ohne Bezug zu einem Diagrammobjekt. Und sie gibt entweder true oder false zurück:

erstellen.

Erzeugt eine grafische Ressource ohne Bindung an ein Diagrammobjekt.

Parameter

Name

[in] Basis für den Namen der grafischen Ressource. Der Ressourcenname wird bei der Erstellung durch Hinzufügen einer Pseudo-Zufallszeichenfolge gebildet.

Breite

Breite [in] Breite (X-Größe) in Pixel.

Höhe

[in] Höhe (Größe der Y-Achse) in Pixel.

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

[in] Farbverarbeitungsmethode. Siehe die Beschreibung der Funktion ResourceCreate() für weitere Einzelheiten zu den Methoden der Farbbehandlung.

Der Rückgabewert ist

true - wenn erfolgreich, sonst false


Im Allgemeinen ist es schwer zu verstehen, was Sie gezeigt haben.

Aber Sie können es auf diese Weise versuchen:

Wenn Sie dort CGraphic haben, müssen Sie in den Create()-Code einsteigen, um zu verstehen, was er zurückgibt, denn in der Hilfe steht kein Wort darüber:

Ich habe bereits oben mit Error Reset geprüft und die Stelle lokalisiert, an der der Fehler auftritt.

Außerdem tritt er dort zweimal bei verschiedenen Funktionen auf - nach der ersten Funktion ist der Fehler behoben, aber dann tritt er wieder auf.

Und meine Variante der Schöpfung

erstellen.

Erzeugt eine grafische Ressource, die mit dem Diagrammobjekt verknüpft ist.

bool Erstellen (
const longchart,// Diagramm-ID
const stringname,//name
const intsubwin,// Anzahl der Unterfenster
const intx1,//Koordinate x1
const inty1,//Koordinate y1
const intx2,//Koordinate x2
const inty2//Koordinate y1
)

Parameter

Karte

Der [in]-Bezeichner des Diagramms.

Name

[in] Name.

subwin

[Nummer des Unterfensters.

x1

[Koordinate X1.

y1

[in] Koordinate Y1.

x2

[in] Koordinate X2.

y2

[in] Koordinate Y2.

 
Aleksey Vyazmikin:

Ich habe bereits oben mit einem Fehler-Reset geprüft und lokalisiert, wo der Fehler auftritt

Sie setzen den Fehler nicht zurück , bevor Sie die Objektsuchfunktion aufrufen.

 
Artyom Trishkin:

Sie setzen den Fehler nicht zurück , bevor Sie die Objektsuchfunktion aufrufen.

Ja, im Code-Zitat setze ich nicht zurück, da ich den Code oben bereits überprüft habe - es gibt dort keinen Fehler, also habe ich ähnliche Prüfzeilen wie unten gezeigt gelöscht.

 
Hallo, meine Alert-Funktion liest eine Zeichenfolge aus einer Datei und gibt sie entweder in chinesischen oder japanischen Zeichen aus, wie kann ich das beheben?
 
Artyom Trishkin:

Sie setzen den Fehler nicht zurück , bevor Sie die Objektsuchfunktion aufrufen.

Ich habe beschlossen, das Experiment noch einmal zu wiederholen, hier ist der Code

      //--- отключим показ ценового графика
      ChartSetInteger(0,CHART_SHOW,false);
      long chart=ChartID();

      CGraphic graphic;
         Print("0 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
      if(ObjectFind(chart,name)<0)
        {
         Print("1 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
         graphic.Create(chart,name,0,0,0,pix_X,pix_Y);//Создает графический ресурс, привязанный к объекту чарта 
         Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
        }

Hier ist das Ergebnis.

2019.02.17 08:55:19.845 Test_4G_CB (Si Splice,H1)       0 Тут ошибка 0 Операция выполнена успешно
2019.02.17 08:55:19.860 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02.17 08:55:19.860 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден
Haben Sie eine Idee, was den Fehler verursacht hat?
 
Denis Nikolaev:
Hallo, meine Alert-Funktion liest eine Zeichenfolge aus einer Datei und gibt sie entweder in chinesischen oder japanischen Zeichen aus, wie kann ich das beheben?

Konfigurieren Sie die Schriftarten in Windows. Stellen Sie Russisch als "Sprache für Programme, die Unicode nicht unterstützen" ein.

"Regionale Standards" - "Fortgeschritten".

 
Vladimir Karputov:

Konfigurieren Sie die Schriftarten in Windows. Stellen Sie Russisch als "Sprache für Programme, die Unicode nicht unterstützen" ein.

"Regionale Standards - Fortgeschrittene.

Das hat nicht funktioniert.

Ich erhalte eine automatische Übersetzung einer aus einer Datei gelesenen Zeile ins Japanische oder Chinesische, warum passiert das?

 
Aleksey Vyazmikin:

Ich habe beschlossen, das Experiment noch einmal zu wiederholen, hier ist der Code

Hier ist das Ergebnis

Haben Sie eine Idee, was den Fehler verursacht hat?

Nun, da Sie den letzten Fehler zurückgesetzt haben, schauen Sie in den Weiten von CGraphic nach, wo dieser Fehlercode auftritt.

Grund der Beschwerde: