Errores, fallos, preguntas - página 1149

 
Contender:

Por lo demás:

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

?

gracias.... pregunta eliminada.
 

Saludos a la respetada comunidad.

No he podido encontrarlo en la página web, y yo mismo no he entendido durante medio día, por qué este código escribe un error. Por favor, dígame si puede.

//+------------------------------------------------------------------+
//| 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:

Saludos a la respetada comunidad.

No he podido encontrarlo en la página web, y yo mismo no he entendido durante medio día, por qué este código escribe un error. Por favor, dígame si puede.

¿Por qué eliminar el objeto?
 
sergeev:
¿por qué borrar un objeto?
En realidad, el programa es más complejo. Ya lo he simplificado de forma desproporcionada para ver cuál es el problema. Pero no lo he descubierto.
 
svds75:
En realidad, el programa es más complejo. Ya lo he simplificado de forma desproporcionada para ver cuál es el problema. Pero sigo sin entenderlo.
Intenta entender por qué sólo hay un mensaje y no todos los ticks, entonces no habrá preguntas.
 
svds75:
En realidad, el programa es más complejo. Ya lo he simplificado de forma desproporcionada para ver cuál es el problema. Pero sigo sin entenderlo.

A juzgar por el estilo del código, todavía se puede simplificar.

¿Quizás me confundí en el if/else?

 
svds75:

Saludos a la respetada comunidad.

No he podido encontrarlo en la página web, y yo mismo no he entendido durante medio día, por qué este código escribe un error. Por favor, dígame si puede.

El código es más legible en esta disposición y el error es inmediatamente visible:

//---
   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:
Intenta entender por qué sólo hay un mensaje y no todos los ticks, entonces no tendrás ninguna duda.
Lo siento, no lo entiendo. Tal vez usted sabe la respuesta, y me dio una pista. También lo he pensado, si me hubieras dicho qué función, ObjectFind() u ObjectDelete(), da error en _LastError, o cualquier otra, quizás lo entendería.
sergeev:

a juzgar por el estilo del código, todavía se puede simplificar. comenta un poco

¿tal vez se confunde en el if/else?

He probado muchas variantes (incluso en este código), por no hablar del lugar de aplicación. Y el if/else de abajo parece que lo puedes quitar y el error permanece.

En general, se puede evitar. Tienes que escribir más código comprobando el objeto después de tratarlo decentemente. Me parece más fácil borrarlo y crearlo de nuevo con los parámetros necesarios porque sus parámetros cambian muchas veces durante el tiempo de ejecución. Aquí me lo he encontrado y por eso lo pregunto.

 
barabashkakvn:

Esto hace que el código sea más fácil de leer y muestra el error inmediatamente:

¿Cuál es el error? Aunque sepas que el objeto no existe, ¿no puedes comprobar si existe?

Y en cuanto al diseño, como se dice, "gusto y color..."

 
svds75:

¿Qué tiene de malo? Aunque sepas que el objeto no existe, ¿no puedes comprobar su existencia?

Y en cuanto al diseño, como se dice, "gusto y color..."

ObjectFind

Valor devuelto

Sila función tiene éxito, devuelve el número de la subventana (0 significa ventana del gráfico principal), en la que se encuentra el objeto encontrado. Si no se encuentra el objeto, la función devolverá un número negativo. Para obtener información adicional sobre el error, llame a la función GetLastError().

Si el objeto no se encuentra, esto es un error. En ese momento, la propia funciónObjectFind devolverá un número negativo y se podrá obtener el número de error.

Esto está más claro:

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

Ejecútalo en debug y mira el valor de la variable"find"

Razón de la queja: