Errori, bug, domande - pagina 2569

 
Roman:

Sì, e contiene spazzatura.

La domanda era molto diversa. Inizializzare con un valore vuoto, non zero. Se una cosa del genere è possibile.
Lo zero è un numero! Un valore vuoto come lo capisco, nessun numero, niente.
Ma le celle di memoria sono inizializzate con questo vuoto ))

Come te lo immagini?

Una posizione di memoria contiene sempre qualcosa. Un singolo byte può contenere un numero tra 0 e 255.

Non viene fornito un valore vuoto.

 
Roman:

Sì, e contiene spazzatura.

La domanda era molto diversa. Inizializza con un valore vuoto, non zero. Se è possibile.
Lo zero è un numero! Un valore vuoto come lo capisco, nessun numero, niente.
Ma le celle di memoria sono inizializzate con questo vuoto ))


Tutto è possibile, ma il compito non è chiaro. O allocare da codici di intervallo char con stato speciale, se possibile(CHAR_MAX- vuoto, CHAR_MAX-1 - errore, ecc.), o parallelamente all'array di char memorizzare i flag che descrivono lo stato dell'array di caratteri (un byte - flag "vuoto" per otto celle). Ma questo probabilmente non è affatto necessario, strano desiderio.

ZS: probabilmente l'influenza dei linguaggi in cui tutti gli array sono associativi
 
Roman:

Sì, e contiene spazzatura.

La domanda era molto diversa. Inizializza con un valore vuoto, non zero. Se è possibile.
Lo zero è un numero! Un valore vuoto come lo capisco, nessun numero, niente.
Ma le celle di memoria sono inizializzate con questo vuoto ))

Non funziona così))) Un byte è un'unità di informazione. Se c'è, allora c'è un valore.
 
Maksim Emeliashin:

MT5 Build 2145 del 17 settembre 2019.

Quando il tester si avvia, disattiva automaticamente il cluster di agenti di rete locale. Se è forzato, la prossima volta che il tester viene avviato lo spegne di nuovo forzatamente.

Così stufo del problema che si trascina per mezzo anno quando improvvisamente la metà degli agenti smette di accettare il lavoro e bisogna forzarli a partire e a rientrare,

e ora devo attivare gli agenti locali ogni volta che il tester si avvia.

Cosa viene visualizzato nel diario di bordo del tester quando si fa questo?

 
Slava:

Cosa viene visualizzato nel diario di bordo del tester quando si fa questo?

Già ottenuto, c'era una versione di debug dell'EA, apparentemente non può essere utilizzato per il tester negli agenti locali, ma solo in quelli sul tuo computer, anche se non è chiaro perché.
 
Roman:

Sì, e contiene spazzatura.

La domanda era molto diversa. Inizializzare con un valore vuoto, non zero. Se è possibile.
Lo zero è un numero! Un valore vuoto come lo capisco, nessun numero, niente.
Ma le celle di memoria sono inizializzate con questo vuoto ))

per esempio, inizializzare diversi tipi con "vuoto"

   uchar  c=EMPTY_VALUE;
   uint   i=EMPTY_VALUE;
   ulong  l=EMPTY_VALUE;
   short  s=EMPTY_VALUE;
   float  f=EMPTY_VALUE;
   double d=EMPTY_VALUE;
   string str=EMPTY_VALUE;
   uchar uc[];
   StringToCharArray(str,uc);

che abbiamo in forma HEX quando facciamo il debug:


Con le corde, è una cosa divertente.


ma se la stringa è inizializzata in questo modo

string str="";

poi il risultato:


Beh, se non inizializzi affatto (string str;) e inizializzi =NULL, allora quello che ti serve è un vero void:


 
Nikolai Semko:

per esempio, inizializzare diversi tipi con "vuoto"

che abbiamo in forma HEX durante il debug:


Con le corde, è una cosa divertente.


ma se la stringa è inizializzata in questo modo

poi il risultato:


Beh, se non inizializzi affatto (string str;) e inizializzi =NULL, allora quello che ti serve è un vero vuoto:


Dove ha visto un vuoto? Si chiama overrun dell'array. In C/C++ comportamento non definito e qui errore di runtime.
Tutti gli altri tipi sono implicitamente lanciati da double, quindi anche questo è giusto.
 
Vladimir Simakov:
Dove vedi il vuoto? Si chiama superamento dell'array. In C/C++ comportamento non definito, e qui è un errore di runtime.
Tutti gli altri tipi sono implicitamente lanciati da double, quindi tutto è corretto anche lì.

La stringa è vuota (non uchar array), come se non esistesse, cioè non viene allocata nemmeno la memoria.

Questo si osserva in altri tipi. Se dichiarate una variabile, significa che la memoria è già allocata.
Ma di fatto, stringa non è un tipo primitivo, ma un tipo di riferimento, così come qualsiasi array.

 

non riesco a capire come controllarePrintFormat

Nota

PrintFormat() non viene eseguito nel tester di strategia in modalità ottimizzazione.

Qualche pensiero?

 
Igor Makanu:

non riesco a capire come controllarePrintFormat

Nota

PrintFormat() non viene eseguito nel tester di strategia in modalità ottimizzazione.

Qualche pensiero?

Controllare cosa?

Vuoi vedere come viene stampato?

Nel visualizzatore.