Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 161
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
2020.01.27 01:15:57.859 tst (EURUSD,H1) (null) , 0.000000 , 0
se rimuovo la conversione di tipo, il 'NULL' - espressione di tipo 'void' è illegale
interessante, si scopre che la stringa nput può essere inizializzata void
NULL è l'inizializzazione. L'esempio mostra volutamente una stringa non in ingresso.
NULL / NIL (in altri termini) non può essere un'inizializzazione di un'entità stringa costante.
Almeno perché la stringa mql non è un "puntatore" come in C. Non ha uno stato speciale "niente di niente".
PS (oh, non me lo aspettavo da me stesso)
Non ha uno stato speciale di "niente di niente"
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Peculiarità di mql5, consigli e trucchi
fxsaber, 2020.01.26 15:54
Uso questa condizione ogni giorno.
almeno perché una stringa mql non è un "puntatore" come in C. Non ha uno stato speciale "niente di niente".
PS (oh, non me lo aspettavo da me).
ahimè no, una stringa in MQL è un'entità con memoria allocata.@Ilyas ha spiegato perché StringBufferLen() può non mostrare la lunghezza della stringa, ma mostra la memoria utilizzata per memorizzare la stringa.
Uso questa condizione ogni giorno.
Non è affatto un indicatore, in MQL4 disattivo i puntatori a qualsiasi oggetto usando StringConcatenate(), cioè il lavoro delle funzioni integrate non è implementato dalle regole MQL )))
In MQL4, disattivo i puntatori a qualsiasi oggetto usando StringConcatenate(), cioè le funzioni integrate non sono implementate dalle regole MQL )))
Non fa alcuna differenza cosa c'è dentro.
Forum sul trading, sistemi di trading automatico e test di strategia
Peculiarità di mql5, consigli e trucchi
Igor Makanu, 2020.01.26 22:27
Non fa differenza come è dentro.
ha integrato il mio post con il tuo esempio
Ho anche fatto un altro paio di esperimenti con la stringa di input s = NULL;
per quanto ho capito, mentre non stiamo cercando di utilizzare il valore della variabile di ingresso - sarà NULL, ma nel momento in cui cerchiamo di assegnare il valore a un'altra variabile o semplicemente di disinserirla, NULL scomparirà, cioè la memoria sarà allocata a questa variabile di ingresso
per quanto ho capito, mentre non stiamo cercando di utilizzare il valore di una variabile di input - questo valore è NULL, ma in quel momento, se cerchiamo di assegnare il valore di questa variabile di input a un'altra variabile o semplicemente di deselezionare questa variabile di input, allora questo NULL scomparirà, cioè la memoria sarà allocata a questa variabile di input
Il meccanismo di funzionamento della variabile di ingresso è stato descritto in dettaglio sopra.
Non fa alcuna differenza cosa c'è dentro.
c'è (ancora) specificità di dereferenziazione delle entità (non ci sono puntatori in mql, non è C, che ci siano entità)
input è una const dichiarata all'avvio. non potete dargli fisicamente il valore "NULL".
const string nothing=NULL; /// <--- ЭТО ЧТО ?
Sì, questo comportamento è probabilmente solo "infallibile".
Apparentemente, poiché la variabile di input deve essere inizializzata, il= NULL è artificialmente equiparato a ="", quando la variabile occupa già almeno un byte in memoria.
In MQL5 le voci:
Sono assolutamente identici. Nessuna memoria è allocata per la variabile. Comunque, non ho trovato alcuna differenza.
In java, per esempio, tali record sono leggermente diversi, nonostante il fatto che anche in entrambi i casi non venga allocata memoria per la variabile. La prima variante (String str = null;) sarà considerata inizializzata, anche se non viene allocata memoria per la variabile e la variabile può essere stampata come vuota. Nel secondo caso (String str;) quando si cerca di stampare la variabile, verrà generato un errore di variabile non inizializzata.
Cioè MQL5 è più tollerante in questo senso.
Quale sia meglio, non lo so nemmeno io.
Come si fa a non assegnare memoria a una variabile?
La memoria è allocata e la variabile contiene spazzatura arbitraria.
E il fatto che la stringa non emetta alcun valore, è logico che il buffer sia vuoto.
Come si fa a non assegnare memoria a una variabile?
La memoria è allocata, ma la variabile non contiene spazzatura arbitraria.
E il fatto che la stringa non emetta alcun valore, è logico che il buffer sia vuoto.