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
I risultati dell'esecuzione mostrano che il compilatore agisce contro la logica:
Per una pura stringa costante, la dimensione del buffer di StringBufferlen=0, il che significa che la stringa è costante:
Riassegnare una stringa "presumibilmente" costante non è lavorare con una costante, ma creare esattamente una variabile dinamica con una preassegnazione di 260 caratteri:
Per una pura stringa costante, la dimensione del buffer di StringBufferlen=0, il che significa che la stringa è costante:
Riallocare una stringa "presumibilmente" costante non è lavorare con una costante, è creare una variabile dinamica con una preallocazione di 260 caratteri:
è il momento di introdurre gli allocatori )))
Un promemoria che c'è un bug con il buffer delle stringhe:
La funzione della DLL può essere qualsiasi cosa.Suggerisco di aggiungere una versione estesa della funzioneStringToTime a MQL nel modulo:
Perché nella versione attuale la funzione restituisce sempre l'ora valida, anche se la stringa contiene schifezze, e viene restituita la data attuale, il che è particolarmente strano:
StringToTime("aaabbbccc") restituisce "2019.09.05 01:00:00" È normale? In questa implementazione, la funzione è pericolosa per la salute, quindi è necessaria una versione con controlli di correttezza.
Finora dobbiamo fare il parsing con la nostra funzione,ma il problema è che il tempo può essere specificato in diversi formati.E non voglio davvero codificare tutti quei formati reinventando la ruota quando il tempo è già stato implementato in MQL.
Fondamentalmente, questo si applica anche ad altre funzioni di conversione di stringhe: StringToInteger, StringToDouble. Nessun controllo di validità è previsto anche per loro.
p.s. Hmm, si scopre cheGetLastError() genera errori in questi casi. Non lo sapevo. La documentazione di queste funzioni non dice nulla del genere. Questo elimina il problema, anche se sarebbe più facile con un bool.Appoggio il suggerimento di Alexey, la gestione sicura delle stringhe è la chiave per evitare errori nascosti.
errore "la proprietà esiste già con un valore diverso e sarà saltata".
L'ho usato per la prima volta. Nessun altro file ce l'ha. Non dipende dal valore. Costruire 2136.
Per favore, riporta la styler vecchio stile.
Ora non riesco a capire cosa dovrebbe funzionare qui:
Questo pezzo aveva questo aspetto:
errore "la proprietà esiste già con un valore diverso e sarà saltata".
L'ho usato per la prima volta. Nessun altro file ce l'ha. Non dipende dal valore. Costruire 2136.
Questo errore si verifica mentre si lavora con i progetti se il valore della proprietà specificata nel codice sorgente è in conflitto con il valore nelle impostazioni del progetto.
Proprietà del progetto
Per favore, riporta la styler vecchio stile.
Ora non riesco a capire cosa dovrebbe funzionare qui:
Questo pezzo aveva questo aspetto:
Gli if multipli annidati non possono essere salvati da nessun allineamento. Dobbiamo cambiare il codice per renderlo leggibile.
Gli if multipli annidati non possono essere salvati da nessun allineamento. Devi cambiare il codice per renderlo leggibile.
Non c'è annidamento multiplo - il livello superiore è if, poi if else.
Sto chiedendo il vecchio stile, quando tutto il resto assomigliava a questo:
- Era su una sola riga e non c'era alcun offset del testo successivo a destra.
Ecco un esempio dall'aiuto delladichiarazione condizionale if-else (il vecchio styler)
e questo è ciò che fa il nuovo styler: