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 |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mapping//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble &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 callreturn(rates_total);
}
//+------------------------------------------------------------------+
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.
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.
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çãoGetLastError().
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))
Caso contrário:
string var1[1][2] = {{"dfdffd", "dfdfd"}}} = {{"dfdffd", "dfdfd"}}
?
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.
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 um objecto?
O programa é de facto mais complexo. Já o simplifiquei de forma desproporcionada para ver qual é o problema. Mas ainda não o compreendo.
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"?
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:
Tente compreender porque é que existe apenas uma mensagem e não todos os tick, assim não terá quaisquer perguntas.
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.
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...".
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:
Executar em debug e ver o valor da variável"find"