Errori, bug, domande - pagina 1331

 

Come questo - ci sarebbe davvero un'ambiguità

void f( uint )  { Print( __FUNCSIG__ ); }
void f( int  )  { Print( __FUNCSIG__ ); }
void OnStart()
{
        char ch = 0;
        f( ch ); // неопределенность 
}

che è stranamente superato dal compilatore se si riscrive l'esempio in modo diverso

#import "Test.ex5"
        void f( uint );
#import
        void f( int  )  { Print( __FUNCSIG__ ); }
void OnStart()
{
        char ch = 0;
        f( ch ); // вызывается f(int), а должна генерироваться неопределенность
}
 
La tua verità
 
Non so se questo è stato menzionato prima. In MetaEditor, se il nome della variabile di input coincide con il nome della variabile locale (o il nome del campo di classe), quest'ultima viene evidenziata in rosso ovunque, proprio come la variabile di input. Questo causa confusione quando si legge il codice. Dovremmo risolvere questo problema.
 
Alexey Navoykov:
Non so se è stato detto prima o no. In MetaEditor se il nome della variabile di input coincide con il nome della variabile locale (o il nome del campo della classe), quest'ultima è segnata in rosso ovunque, così come la variabile di input. Ciò causa confusione quando si legge il codice. Dovremmo risolvere questo problema.

dare nomi identici a entità di codice è un tentativo di darsi la zappa sui piedi :)

È più facile cambiare il nome di una variabile di input e non avrete problemi e confusione...

 

MT4/845, Windows7/64 bit. Domanda sul testo in una nuova riga con \n. Ho fatto uno script:

#property strict

string t1="Text_1";
string t2="Text_2";

void OnStart()
  {
   Print(t1+"\n "+t2);
   Print("Text_3"+"\n Text_4");
  }

Risultato:


Speravo che i valori Text_2 e Text_4 fossero su altre linee. Per favore, consigliatemi cosa c'è che non va.

 
Konstantin Karpov:

dare nomi identici a entità di codice è un tentativo di darsi la zappa sui piedi :)

È più facile cambiare il nome di una variabile di input e non avrete problemi o confusione...

Il tuo consiglio non ha senso nella pratica. Nessuno dà nomi identici di proposito. Il codice della funzione locale vive la sua vita separata, mentre il programma esterno vive la sua vita. E i nomi delle variabili esterne possono cambiare nel tempo e nuove variabili esterne possono essere aggiunte.E se dopo, improvvisamente una delle centinaia di funzioni hauna variabile locale con lo stesso nome, cosa pensi che dovremmo rinominare la variabile globale? Non dovresti cercare scuse per i bug degli sviluppatori.
 

MT4/845, Windows7/64 bit. Script:

#property strict

double d1 = 2.009745110811111111111111111;
double d2 = 3.654;
double d3;
//---
void OnStart()
  {
   d3=d1/d2;
   Print("A: d3 = ",DoubleToString(d3));
   Print("B: d3 = ",DoubleToStr(d3));
   Print("C: d3 = ",DoubleToString(d3,16));
   Print("D: d3 = ",DoubleToString(d3,8));
   Print("E: d3 = ",DoubleToString(NormalizeDouble(d3,8)));
   Print("F: d3 = ",DoubleToString(NormalizeDouble(d3,7)));
   Print("G: d3 = ",DoubleToString(NormalizeDouble(d3,8),7));
   Print("H: d3 = ",DoubleToString(NormalizeDouble(d3,8),8));
  }
//+------------------------------------------------------------------+

Risultato:


Qualcuno sa come stampare il numero 0,55001234?

 
Maxim Khrolenko:

MT4/845, Windows7/64 bit. Script:

Risultato:


Qualcuno sa come stampare il numero 0,55001234?

 Print("C: d3 = ",DoubleToString(d3,8));

 
Maxim Khrolenko:

MT4/845, Windows7/64 bit. Domanda sul testo in una nuova riga con \n. Ha fatto uno script:

Apparentemente un errore in MT4 (in MT5 tutto va bene)
 
A100:
Apparentemente un bug in MT4 (MT5 è a posto)
Capisco, spero che gli sviluppatori prestino attenzione a questo.