Функция StrToTime вызывает ошибку 4051 - страница 3

 
Функции StrToTime и StringToTime одинаковы.
RaptorUK:
Зачем мне нужна совместимость с mql5? Я использую код mql4 для MT4.

Я не говорил, что вы должны.
 
RaptorUK:
ResetLastError() перед вызовом StrToTime(), затем вызовите GetLastError() после этого. ... StrToTime() не должен вызывать ошибку, но он ее вызывает... это ошибка. Нечто подобное уже было признано и исправлено: https://www.mql5.com/en/forum/149475/page2.


Где-нибудь в документации написано, что StrToTime() использует обработчик ошибок?

Если нет, то

1) Нет причин проверять его

2) Нет причин ожидать, что возвращаемое значение имеет какое-либо отношение к результату функции StrToTime().

Также, что означает ошибка 4051? Неверная сумма лотов?????

 
graziani:


Написано ли где-нибудь в документации, что StrToTime() использует обработчик ошибок?

Если нет, то

1) Нет причин проверять это

2) Нет причин ожидать, что возвращаемое значение имеет какое-либо отношение к результату функции StrToTime().

Также, что означает ошибка 4051? Неверная сумма лотов?????

Эта ошибка может быть сгенерирована многими функциями, даже теми, которые не возвращают значение.

ERR_INVALID_FUNCTION_PARAMVALUE4051Неверное значение параметра функции.
 

Можете ли вы показать мне ссылку в документации, где говорится, что StrToTime() использует обработчик ошибок и что после завершения функции вы должны проверить ее успешность, вызвав GetLastError()?

 

В любом случае, есть одна вещь, в которой мы согласны, так что давайте лучше пошумим об этом:

Принуждение к тому, чтобы комментарии в исходном коде советника после определения внешних/входных переменных были видны как определение переменных в свойствах экспертов в тестере стратегий - это высокомерное, наглое и неуважительное отношение к программистам! MQ не имеет права вводить такое правило и заставлять пользователей тратить время на изменение многочисленных строк исходного кода и менять привычки комментирования и написания исходного кода, таким нестандартным способом. Если они хотят такого нестандартного поведения, оно должно быть реализовано с помощью директив #pragma, так как это стандартный и принятый способ.

 
graziani: он должен быть реализован с помощью директив #pragma, так как это стандартный и принятый способ.
Или более компактный "стандартный и принятый способ", но все еще контролируемый кодером.
Doxygen
int var; /*!< Detailed description after the member */
int var; //!< Brief description after the member
или в стиле QT
int var; /**< Detailed description after the member */
 
graziani:

Можете ли вы показать мне ссылку в документации, где говорится, что StrToTime() использует обработчик ошибок и что после завершения функции вы должны проверить ее успешность, вызвав GetLastError()?

Нет, не могу.

Подобная ситуация уже была исправлена с помощью TerminalInfoString() ... как я уже упоминал. Но я понял вашу мысль, если бы пользователь правильно использовал GetLastError(), то "ошибка" никогда бы не была замечена.
 
graziani:

В любом случае, есть одна вещь, в которой мы согласны, так что давайте лучше пошумим об этом:

Возможно, мы согласны не только в одном.
 
RaptorUK:
Вероятно, мы согласны не в одном вопросе.

Похоже. Вы можете создать клуб
 
RaptorUK: Зачем мне нужна совместимость с mql5? Я использую код mql4 для MT4.
graziani: Str vs. String, вы должны использовать новые функции, поскольку они такие же, как в MQL5, чтобы иметь совместимость с исходным кодом.
Документы mq4 были обновлены. Они есть в mt4. https://docs.mql4.com/convert/StrToTime и https://docs.mql4.com/convert/stringtotime.
Причина обращения: