Errori, bug, domande - pagina 1923

 
fxsaber:

La guida afferma che: Se non vengono specificati valori iniziali, le variabili statiche di classe di memoria prendono valori iniziali nulli. E poi - senza template è OK

 
A100:

L'aiuto dice che: Se non vengono specificati valori iniziali, le variabili statiche di classe di memoria prendono valori iniziali nulli

Nel caso dei template, ho un'idea approssimativa di dove vengono le gambe, da qui la comprensione che non è possibile aggiungere semplicemente una linea di template in tutte le situazioni.

Tecnicamente, è probabilmente un errore. Anche se penso che il testo citato dalla documentazione sia stato scritto molto prima dell'apparizione dei modelli e sia in qualche modo impreciso.

 
fxsaber:

Anche se penso che il testo citato dalla documentazione sia stato scritto molto prima che i modelli fossero disponibili ed è in qualche modo impreciso.

Nella documentazione c'è la voce opposta:"Un membro statico della classe deve essere inizializzato esplicitamente con il valore richiesto". Solo il template non influisce su questo - quindi un errore deve o non deve essere generato in entrambi i casi (con e senza template) - qui sta una contraddizione
 
MetaTrader 5 build 1619 started (MetaQuotes Software Corp.)
Microsoft Windows XP (X86 based PC), IE 08.00, Intel Core2 Duo  T7700 @ 2.40 GHz, RAM: 2359 / 3581 Mb, HDD: 17612 / 27784 Mb, GMT+02:00
C:\Program Files\MetaTrader 5

MetaEditor non funziona più dopo l'aggiornamento, dando questo errore


Il 1616 ha funzionato bene, il 1619 no.

Nel registro del terminale dopo aver premuto F4

2017.07.07 12:00:30.109 Error   MetaEditor not found
2017.07.07 12:39:54.296 Error   MetaEditor not found
 
A100:

Non capisco bene il senso del tuo IMHO. Prendete la build <= 1596 (32bit) e controllate (output su file .log immediatamente [5-10 secondi] anche una sola riga). Ho controllato un minuto fa.

[quale cache? quale sempre? c'era qualcosa su qualcosa da qualche parte!?!]

Sto parlando della scheda Experts e della cartella MQL5\Logs\.

IMHO è stato scritto per delicatezza innata - un sottile accenno all'incoerenza delle nostre esperienze. Per me, 5-10 secondi non sono affatto immediati. E questo ritardo non è sempre limitato a secondi, secondo le mie osservazioni.

[La cache è la cache, lo è sempre fino ad ora, la questione della registrazione ritardata è già stata discussa su questo forum - se è davvero importante per te - cercala].

 
Stanislav Korotky:

Per me, 5-10 secondi non sono affatto immediati. E questo ritardo non è sempre limitato a pochi secondi, secondo le mie osservazioni.

Prima era di 5-10 secondi (forse di più in alcuni casi), e ora senza menu View - i log non sono aggiornati affatto (!) (poiché l'inizio della giornata è passato diverse ore, e il file è zero, mentre la scheda Experts ha nuove righe per il giorno). La normale registrazione è interrotta in nome della mitica accelerazione di "un paio di nanosecondi" del terminale
 

Errore di compilazione

struct A {
        A() {}
        int aa;
};
struct B {
        static A a;
};
A B::a;
template<typename T>
struct C {
        static T a;
};
template<typename T>
T C::a;
void OnStart()
{
        B    x1;
        Print( x1.a.aa ); //нормально
        C<A> x2;
        Print( x2.a.aa ); //unresolved static variable 'C<A>::a'
}
Sembra il caso precedente https://www.mql5.com/ru/forum/1111/page1943#comment_5410554 ma non potete nascondere l'errore qui specificando T C::a = 0; // manca A::A( int )
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.07.06
  • www.mql5.com
Форум алго-трейдеров MQL5
 

Errore durante l'esecuzione

void OnStart()
{
        string text = "1234\0";
        Print(  "1>'",    text, "'" ); //не выводит завершающую кавычку
        printf( "2>'%s'", text );      //нормально
}

Risultato:

1>'1234
2>'1234'

 

Errore di compilazione

#define  MACRO( x )      Print( x )
void OnStart()
{
        MACRO/**/( 10 ); //error: '' - argument expected for the function-like macro
}
 

Ci si aspettava il contrario

class A {};
struct B {
        const A *       a1;   //(1) есть сообщение об ошибке
              A * const a2;   //(2) нет сообщения
};
void OnStart()
{
        B b1;
        B b2;
        b2 = b1; //error: '=' - not allowed for objects with protected members or inheritance
}
  1. Se la struct B contiene solo la linea (1) - c'è un messaggio di errore
  2. Se la struct B contiene solo la linea (2) - nessun messaggio d'errore
  3. Ci si aspettava il contrario

Inoltre nessun errore era previsto in entrambi i casi (1. e 2.)

void OnStart()
{
        B b1;
        B b2 = b1; //error: '=' - not allowed for objects with protected members or inheritance
}