Erros, bugs, perguntas - página 2427

 
Slava:
Mostrar o código de saída


// Создадим поле ввода лота
   EditCreate(0,prefix+"LotBuy",xd,yd+15,47,15,0,(string)Lots,"Lot Buy","Verdana",8,clrBlack,C'241,239,226',clrGray,false,ALIGN_CENTER);

   EditCreate(0,prefix+"LotSell",xd,yd+15,47,15,0,(string)Lots,"Lot Sell","Verdana",8,clrBlack,C'241,239,226',clrGray,false,ALIGN_CENTER);

void EditCreate(long chart_ID,string nm="Edit",int xd=0,int yd=0,int width=50,int height=18,int cr=0,
                string text="Edit",string tooltip="Edit",string font="Arial",int font_size=9,
                color clr=clrBlack,color back_clr=C'236,233,216',color border_clr=clrNONE,
                                                              bool read_only=false,int align=0) {
 if(ObjectFind(chart_ID,nm)<0) {
    ObjectCreate(chart_ID,nm,OBJ_EDIT,0,0,0);
    ObjectSetInteger(chart_ID,nm,OBJPROP_XDISTANCE,xd);
    ObjectSetInteger(chart_ID,nm,OBJPROP_YDISTANCE,yd);
    ObjectSetInteger(chart_ID,nm,OBJPROP_XSIZE,width);
    ObjectSetInteger(chart_ID,nm,OBJPROP_YSIZE,height);
    ObjectSetString(chart_ID,nm,OBJPROP_TEXT,text);
    ObjectSetString(chart_ID,nm,OBJPROP_TOOLTIP,tooltip);
    ObjectSetString(chart_ID,nm,OBJPROP_FONT,font);
    ObjectSetInteger(chart_ID,nm,OBJPROP_FONTSIZE,font_size);
    ObjectSetInteger(chart_ID,nm,OBJPROP_ALIGN,align);
    ObjectSetInteger(chart_ID,nm,OBJPROP_READONLY,read_only);
    ObjectSetInteger(chart_ID,nm,OBJPROP_CORNER,cr);
    ObjectSetInteger(chart_ID,nm,OBJPROP_COLOR,clr);
    ObjectSetInteger(chart_ID,nm,OBJPROP_BGCOLOR,back_clr);
    ObjectSetInteger(chart_ID,nm,OBJPROP_BORDER_COLOR,border_clr);
    ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,false);
    ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,false);
    ObjectSetInteger(chart_ID,nm,OBJPROP_HIDDEN,false);
  }
 }
 
Vitaly Muzichenko:


"1.e-002" é (string)Lots?
 
Slava:
"1.e-002" é (string)Lots?

Sim.

 
Slava:
"1.e-002" é (string)Lots?

Mudou o lote nos parâmetros de entrada para 0,05

Alterou o código para:

   EditCreate(0,prefix+"LotBuy",xd,yd+15,47,15,0,DoubleToString(Lots),"Lot Buy","Verdana",8,clrBlack,C'241,239,226',clrGray,false,ALIGN_CENTER);

   EditCreate(0,prefix+"LotSell",xd,yd+15,47,15,0,Lots,"Lot Sell","Verdana",8,clrBlack,C'241,239,226',clrGray,false,ALIGN_CENTER);



P.S. Mas se introduzir 0.01 de uma só vez, apresenta-se correctamente

 EditCreate(0,prefix+"LotBuy",xd,yd+15,47,15,0,(string)0.01,"Lot Buy","Verdana",8,clrBlack,C'241,239,226',clrGray,false,ALIGN_CENTER);
 
Vitaly Muzichenko:

Mudou o lote nos parâmetros de entrada para 0,05

Alterou o código para:



P.S. Mas se introduzir 0.01 de uma só vez, apresenta-se correctamente

Vitaliy, mas a DoubleToString tem o segundo parâmetro. E é obrigatório na sua versão, caso contrário será por defeito. Felizmente não me lembro de quanto, não é interessante para mim.

 
Alexey Viktorov:

Vitaly, mas DoubleToString tem um segundo parâmetro. E na sua variante é obrigatório, caso contrário será por defeito. Felizmente não me lembro de quanto, não estou interessado nisso.

Por defeito, não deve produzir 0,01 como 1.

Iremos corrigir

 
Slava:

Por defeito, não deve produzir 0,01 como 1,e-002

Vamos corrigir

Estou apenas contente por este erro ser corrigido. Mas a minha mensagem era apenas que a DoubleToString precisa de um segundo parâmetro no código apresentado.
 
Igor Zakharov:

o compilador comporta-se de forma diferente nos mesmos casos.

Descarregado 2 ficheiros de kodobase:https://www.mql5.com/en/code/15440

foram feitas, obviamente antes do iTime() aparecer. Um deles compila, o outro jura:

As funções são idênticas:

chamadas também.

A razão para a repreensão é óbvia, compreensível e facilmente fixada pela substituição automática, mas o comportamento diferente em situações semelhantes é alarmante.

PS:

O indicador compilado funciona correctamente.

Tenho ambos os ficheiros causando exactamente a mesma lista de erros (8 no total).

 
Stanislav Korotky:

Tenho ambos os ficheiros causando exactamente as mesmas listas de erros (8 no total).

Voltou a descarregar, tentou compilar, ambos Com erros, mas o número é diferente: 8 e 9.


A julgar pelo relatório de auto-substituição, deve ser diferente.

Por isso, ontem houve uma espécie de falha de EM. Vejo o primeiro como um fracasso a favor do utilizador (compilado sem edições e funcionou!).

 
Igor Zakharov:

Voltou a descarregar, tentou compilar, ambos com erros, mas os números são diferentes: 8 e 9.

A julgar pelo relatório de mudança automática, deve ser diferente.

Sim, de facto, a gama tem mais 1.