Erros, bugs, perguntas - página 1149

 
Contender:

Caso contrário:

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

?

thanks....question removed.
 

Saudações comunidade respeitada.

Não consegui encontrá-lo no website, e eu próprio não o compreendi durante meio dia, porque é que este código escreve um erro. Por favor, digam-me se podem.

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

Saudações comunidade respeitada.

Não consegui encontrá-lo no website, e eu próprio não o compreendi durante meio dia, porque é que este código escreve um erro. Por favor, digam-me se podem.

Porquê apagar o objecto?
 
sergeev:
porquê apagar um objecto?
O programa é de facto mais complexo. Já o simplifiquei de forma desproporcionada para ver qual é o problema. Mas ainda não o descobri.
 
svds75:
O programa é de facto mais complexo. Já o simplifiquei de forma desproporcionada para ver qual é o problema. Mas ainda não o compreendo.
Tente compreender porque é que só há uma mensagem e não todas as carraças, então não haverá perguntas.
 
svds75:
Na verdade, o programa é mais complexo. Já o simplifiquei de forma desproporcionada para ver qual é o problema. Mas ainda não o compreendo.

A julgar pelo estilo do código, ainda pode ser simplificado.

Talvez tenha ficado confuso no "se/else"?

 
svds75:

Saudações comunidade respeitada.

Não consegui encontrá-lo no website, e eu próprio não o compreendi durante meio dia, porque é que este código escreve um erro. Por favor, digam-me se podem.

O código é melhor legível neste esquema e o erro é imediatamente visível:

//---
   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:
Tente compreender porque é que existe apenas uma mensagem e não todos os tick, assim não terá quaisquer perguntas.
Lamento, mas não compreendo. Talvez saiba a resposta, e deu-me uma dica. Também pensei nisso, gostaria que me dissesse que função, ObjectFind() ou ObjectDelete(), comete um erro em _LastError, ou qualquer outra, talvez eu compreendesse.
sergeev:

a julgar pelo estilo do código, ainda pode ser simplificado. comentar um pouco

talvez confuso no if/else?

Tentei muitas variantes (mesmo neste código), para não mencionar o local de aplicação. E se/else abaixo parece que o pode remover e o erro permanece.

De um modo geral, pode ser contornada. Tem de escrever mais código verificando o objecto depois de lidar com ele decentemente. Acho mais fácil apagá-lo e criá-lo de novo com os parâmetros necessários porque os seus parâmetros mudam muitas vezes durante o tempo de execução. Foi isso que encontrei e é por isso que estou a perguntar.

 
barabashkakvn:

Isto torna o código mais fácil de ler e mostra o erro imediatamente:

Qual é o erro? Mesmo que saiba que o objecto não existe, não pode verificar se ele existe?

E quanto ao design, como se costuma dizer, "pelo gosto e pela cor...".

 
svds75:

O que há de errado? Mesmo que saiba que o objecto não existe, não pode verificar a sua existência?

E quanto ao design, como se costuma dizer, "sabor e cor...".

ObjectFind

Valor devolvido

Sea função for bem sucedida, devolve o número da subjanela (0 significa janela do gráfico principal), na qual o objecto encontrado se encontra. Se o objecto não for encontrado, a função devolverá um número negativo. Para obter informações adicionais sobre o erro, chamar a função GetLastError().

Se o objecto não for encontrado, isto é um erro. Nesse caso, a própria funçãoObjectFind devolverá um número negativo e o número de erro pode ser obtido.

Isto é mais claro:

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

Executar em debug e ver o valor da variável"find"

Razão: