La funzione StrToTime causa l'errore 4051 - pagina 3

 
Le funzioni StrToTime e StringToTime sono le stesse.
RaptorUK:
Perché dovrei volere la compatibilità con mql5? Sto usando il codice di mql4 per MT4.

Non ho detto che devi.
 
RaptorUK:
ResetLastError() prima della chiamata StrToTime() poi chiama GetLastError() dopo . . . StrToTime() non dovrebbe causare un errore ma lo fa . . . è un bug. Qualcosa di simile è già stato riconosciuto e risolto: https://www.mql5.com/en/forum/149475/page2


C'è scritto da qualche parte nella documentazione che StrToTime() usa il gestore degli errori?

Se no, allora c'è

1) Nessuna ragione per controllarlo

2) Nessuna ragione per aspettarsi che il valore restituito abbia qualcosa a che fare con il risultato della funzione StrToTime().

Inoltre, cosa significa err 4051? Quantità di lotti non validi?????

 
graziani:


C'è scritto da qualche parte nella documentazione che StrToTime() usa il gestore degli errori?

Se no, allora c'è

1) Nessuna ragione per controllarlo

2) Nessuna ragione per aspettarsi che il valore restituito abbia qualcosa a che fare con il risultato della funzione StrToTime().

Inoltre, cosa significa err 4051? Quantità di lotti non validi?????

Questo errore può essere generato da molte funzioni, anche quelle che non restituiscono un valore.

ERR_INVALID_FUNCTION_PARAMVALUE4051Valore del parametro della funzione non valido.
 

Puoi mostrarmi un riferimento nella documentazione dove si afferma che StrToTime() usa un gestore di errori e che dopo che la funzione è stata completata si dovrebbe controllare il suo successo chiamando GetLastError()?

 

Comunque, c'è una cosa su cui siamo d'accordo, quindi facciamo un po' di rumore su questo:

Imporre che i commenti nel codice sorgente EA dopo la definizione delle variabili extern/input siano visibili come definizione delle variabili nelle proprietà expert in strategy tester è arrogante, insolente e irrispettoso verso i programmatori! MQ non ha il diritto di imporre tale regola e costringere gli utenti a perdere tempo per cambiare numerose linee di codice sorgente e cambiare le abitudini di commento e scrittura del codice sorgente, in un modo così non-standard. Se vogliono un tale comportamento non standard, dovrebbe essere implementato usando le direttive #pragma, poiché questo è il modo standard e accettato.

 
graziani: dovrebbe essere implementato usando le direttive #pragma, poiché questo è il modo standard e accettato.
O il più compatto "modo standard e accettato", ma ancora controllato dal codificatore.
Doxygen
int var; /*!< Detailed description after the member */
int var; //!< Brief description after the member
O stile QT
int var; /**< Detailed description after the member */
 
graziani:

Puoi mostrarmi un riferimento nella documentazione dove si afferma che StrToTime() usa un gestore di errori e che dopo che la funzione è stata completata si dovrebbe controllare il suo successo chiamando GetLastError()?

No, non posso.

Una situazione simile è già stata risolta con TerminalInfoString() . . . come ho già detto. Ma ho capito il tuo punto, se l'utente ha usato GetLastError() correttamente l'"errore" non sarebbe mai stato visto.
 
graziani:

Comunque, c'è una cosa su cui siamo d'accordo, quindi facciamo un po' di rumore su questo:

Probabilmente c'è più di una cosa su cui siamo d'accordo
 
RaptorUK:
Probabilmente c'è più di una cosa su cui siamo d'accordo

Sembra. Puoi creare un club
 
RaptorUK: Perché dovrei volere la compatibilità con mql5? Sto usando il codice mql4 per MT4.
graziani: Str vs. String, dovresti usare le nuove funzioni in quanto sono le stesse di MQL5, per avere compatibilità con i sorgenti.
I documenti di mq4 sono stati aggiornati. Sono entrambi in mt4. https://docs.mql4.com/convert/StrToTime e https://docs.mql4.com/conve rt/stringtotime