Fehler, Irrtümer, Fragen - Seite 1149

 
Contender:

Ansonsten:

string var1[1][2] = {{"dfdffd", "dfdfdfd"}}

?

danke....Frage entfernt.
 

Seien Sie gegrüßt, verehrte Gemeinschaft.

Ich konnte es nicht auf der Website finden, und ich habe es selbst einen halben Tag lang nicht verstanden, warum dieser Code einen Fehler schreibt. Bitte sagen Sie mir, ob Sie das können.

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   string nameObject="testObject";
   ChartRedraw(0);
   ResetLastError();
   if(ObjectFind(0,nameObject)>=0){
      if(!ObjectDelete(0,nameObject)){
         if(_LastError>0){
            Print("1 Ошибка №",_LastError);
            ResetLastError();
         }
      }
   }
   ChartRedraw(0);
   if(_LastError>0){
      Print("2 Ошибка №",_LastError); // Тут ошибка №4202 <Графический объект не найден>
      ResetLastError();
   }
   if(!ObjectCreate(0,nameObject,OBJ_LABEL,0,0,0)){
      if(_LastError>0){
         Print("3 Ошибка №",_LastError);
         ResetLastError();
      }
   }else{
      ObjectSetInteger(0,nameObject,OBJPROP_CORNER,1);
   }
   if(_LastError>0){
      Print("4 Ошибка №",_LastError);
      ResetLastError();
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
svds75:

Seien Sie gegrüßt, verehrte Gemeinschaft.

Ich konnte es nicht auf der Website finden, und ich habe es selbst einen halben Tag lang nicht verstanden, warum dieser Code einen Fehler schreibt. Bitte sagen Sie mir, ob Sie das können.

Warum wird das Objekt gelöscht?
 
sergeev:
warum ein Objekt löschen?
Das Programm ist eigentlich viel komplexer. Ich habe es bereits stark vereinfacht, um zu sehen, was das Problem ist. Aber ich habe es nicht herausgefunden.
 
svds75:
Das Programm ist eigentlich viel komplexer. Ich habe es bereits stark vereinfacht, um zu sehen, was das Problem ist. Aber ich verstehe es trotzdem nicht.
Versuchen Sie zu verstehen, warum es nur eine Meldung gibt und nicht jedes Häkchen, dann gibt es keine Fragen mehr.
 
svds75:
In Wirklichkeit ist das Programm viel komplexer. Ich habe es bereits stark vereinfacht, um zu sehen, was das Problem ist. Aber ich verstehe es trotzdem nicht.

Dem Stil des Codes nach zu urteilen, kann er noch vereinfacht werden.

Vielleicht habe ich das if/else durcheinander gebracht?

 
svds75:

Seien Sie gegrüßt, verehrte Gemeinschaft.

Ich konnte es nicht auf der Website finden, und ich habe es selbst einen halben Tag lang nicht verstanden, warum dieser Code einen Fehler schreibt. Bitte sagen Sie mir, ob Sie das können.

Der Code ist in diesem Layout besser lesbar und der Fehler ist sofort sichtbar:

//---
   string nameObject="testObject";
   ChartRedraw(0);
   ResetLastError();
   if(ObjectFind(0,nameObject)>=0)     // конечно объект не найден
     {
      if(!ObjectDelete(0,nameObject))
        {
         if(_LastError>0)
           {
            Print("1 Ошибка №",_LastError);
            ResetLastError();
           }
        }
     }
   ChartRedraw(0);
   if(_LastError>0)
     {                                 // поэтому сразу переходим сюда:
      Print("2 Ошибка №",_LastError);  // Тут ошибка №4202 <Графический объект не найден>
      ResetLastError();
     }
 
mql5:
Versuchen Sie zu verstehen, warum es nur eine Meldung gibt und nicht jedes Häkchen, dann werden Sie keine Fragen mehr haben.
Tut mir leid, ich verstehe das nicht. Vielleicht kennen Sie die Antwort und haben mir einen Tipp gegeben. Ich habe auch darüber nachgedacht, wenn Sie mir gesagt hätten, welche Funktion, ObjectFind() oder ObjectDelete(), einen Fehler in _LastError oder eine andere macht, würde ich es vielleicht verstehen.
sergeev:

dem Stil des Codes nach zu urteilen, kann er noch vereinfacht werden. ein wenig kommentieren

vielleicht durcheinander im if/else?

Ich habe viele Varianten ausprobiert (auch in diesem Code), ganz zu schweigen vom Ort der Anwendung. Und if/else unten sieht es so aus, als ob Sie es entfernen können und der Fehler bleibt.

Im Großen und Ganzen kann sie umgangen werden. Sie müssen mehr Code schreiben, um das Objekt zu überprüfen, nachdem Sie es anständig behandelt haben. Für mich wäre es einfacher, sie zu löschen und mit den erforderlichen Parametern neu zu erstellen, da sich ihre Parameter während der Laufzeit häufig ändern. Das ist es, was mir begegnet ist, und deshalb frage ich.

 
barabashkakvn:

Dadurch wird der Code leichter lesbar und der Fehler wird sofort angezeigt:

Wo liegt der Fehler? Selbst wenn Sie wissen, dass das Objekt nicht existiert, können Sie nicht überprüfen, ob es existiert?

Und was das Design anbelangt, wie man so schön sagt: "Geschmack und Farbe..."

 
svds75:

Was ist daran falsch? Selbst wenn Sie wissen, dass das Objekt nicht existiert, können Sie seine Existenz nicht überprüfen?

Und was das Design anbelangt, wie man so schön sagt: "Geschmack und Farbe..."

ObjectFind

Zurückgegebener Wert

Wenn dieFunktion erfolgreich ist, gibt sie die Nummer des Unterfensters (0 bedeutet Hauptfenster)zurück, in dem sich das gefundene Objekt befindet. Wenn das Objekt nicht gefunden wird, gibt die Funktion eine negative Zahl zurück. Um zusätzliche Informationen über den Fehler zu erhalten, rufen Sie die Funktion GetLastError() auf.

Wenn das Objekt nicht gefunden wird, ist dies ein Fehler. Dabeigibt dieObjectFind-Funktion selbsteine negative Zahl zurück und die Fehlernummer kann ermittelt werden.

Dies ist deutlicher:

//---
   string nameObject="testObject";
   ChartRedraw(0);
   ResetLastError();
   int find=ObjectFind(0,nameObject);
   if(find>=0)     // конечно объект не найден
     {
      if(!ObjectDelete(0,nameObject))

Führen Sie es im Debug-Modus aus und sehen Sie den Wert der Variable"find".