Errori, bug, domande - pagina 2427

 
Slava:
Mostra il codice di uscita


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

Sì.

 
Slava:
"1.e-002" è (stringa)Lotti?

Cambiato il lotto nei parametri di input a 0,05

Cambiato il codice in:

   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. Ma se inserisco 0,01 in una volta sola, viene visualizzato correttamente

 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:

Cambiato il lotto nei parametri di input a 0,05

Cambiato il codice in:



P.S. Ma se si inserisce 0,01 in una volta sola, viene visualizzato correttamente

Vitaliy, ma DoubleToString ha il secondo parametro. Ed è obbligatorio nella vostra versione, altrimenti lo sarà di default. Per fortuna non ricordo quanto, non è interessante per me.

 
Alexey Viktorov:

Vitaly, ma DoubleToString ha un secondo parametro. E nella tua variante è obbligatorio, altrimenti sarà di default. Per fortuna non ricordo quanto, non è interessante per me.

Per default non dovrebbe emettere 0,01 come 1.

Correggeremo

 
Slava:

Per impostazione predefinita, non dovrebbe emettere 0,01 come 1,e-002

Correggiamo

Sono contento che questo errore sarà risolto. Ma il mio messaggio era solo che DoubleToString ha bisogno di un secondo parametro nel codice presentato.
 
Igor Zakharov:

il compilatore si comporta diversamente negli stessi casi.

Scaricato 2 file da kodobase:https://www.mql5.com/en/code/15440

sono stati fatti, ovviamente prima che iTime() apparisse. Uno dei due compila, l'altro impreca:

Le funzioni sono identiche:

chiama anche.

Il motivo del rimprovero è ovvio, comprensibile e facilmente risolvibile con l'autosostituzione, ma il diverso comportamento in situazioni simili è allarmante.

PS:

L'indicatore compilato funziona correttamente.

Ho entrambi i file che causano esattamente la stessa lista di errori (8 in totale).

 
Stanislav Korotky:

Ho entrambi i file che causano esattamente le stesse liste di errori (8 in totale).

Riscaricato, provato a compilare, entrambi con errori, ma il numero è diverso: 8 e 9.


A giudicare dal rapporto di autosostituzione, deve essere diverso.

Quindi ieri c'è stato una specie di guasto del ME. Vedo il primo come un fallimento a favore dell'utente (compilato senza modifiche e funzionava!).

 
Igor Zakharov:

Riscaricato, provato a compilare, entrambi con errori, ma i numeri sono diversi: 8 e 9.

A giudicare dal rapporto di cambio automatico, deve essere diverso.

Sì, infatti, la gamma ha 1 in più.