Errores, fallos, preguntas - página 2427

 
Slava:
Mostrar el código de salida


// Создадим поле ввода лота
   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" es (cadena)Lots?
 
Slava:
¿"1.e-002" es (cadena)Lots?

Sí.

 
Slava:
¿"1.e-002" es (cadena)Lots?

Cambiado el lote en los parámetros de entrada a 0,05

Cambió el código a:

   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.D. Pero si introduzco 0,01 de una vez, se muestra 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:

Cambiado el lote en los parámetros de entrada a 0,05

Cambió el código a:



P.D. Pero si introduces 0.01 de una vez, se muestra correctamente

Vitaliy, pero DoubleToString tiene el segundo parámetro. Y es obligatorio en su versión, de lo contrario será por defecto. Afortunadamente no recuerdo cuánto, no me interesa.

 
Alexey Viktorov:

Vitaly, pero DoubleToString tiene un segundo parámetro. Y en su variante es obligatorio, de lo contrario será por defecto. Afortunadamente no recuerdo cuánto, no me interesa.

Por defecto, no debería mostrar 0,01 como 1.

Corregiremos

 
Slava:

Por defecto, no debería mostrar 0,01 como 1,e-002

Vamos a corregir

Me alegro de que este error se solucione. Pero mi mensaje era sólo que DoubleToString necesita un segundo parámetro en el código presentado.
 
Igor Zakharov:

el compilador se comporta de manera diferente en los mismos casos.

Descargado 2 archivos de kodobase:https://www.mql5.com/en/code/15440

se hicieron, obviamente antes de que apareciera iTime(). Uno de ellos recopila, el otro jura:

Las funciones son idénticas:

llamadas también.

El motivo de la regañina es obvio, comprensible y fácilmente solucionable con la auto-reposición, pero el diferente comportamiento en situaciones similares es alarmante.

PS:

El indicador compilado funciona correctamente.

Tengo ambos archivos que causan exactamente la misma lista de errores (8 en total).

 
Stanislav Korotky:

Tengo ambos archivos que causan exactamente las mismas listas de errores (8 en total).

Volví a descargar y traté de compilar, ambos con errores, pero el número es diferente: 8 y 9.


A juzgar por el informe de sustitución automática, debe ser diferente.

Así que ayer hubo algún tipo de fallo en el ME. La primera la veo como un fallo a favor del usuario (¡compilada sin ediciones y funcionando!).

 
Igor Zakharov:

Volví a descargar y traté de compilar, ambos con errores, pero los números son diferentes: 8 y 9.

A juzgar por el informe de cambio automático, debe ser diferente.

Sí, efectivamente, la gama tiene 1 más.