Особенности языка mql5, тонкости и приёмы работы - страница 161
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
2020.01.27 01:15:57.859 tst (EURUSD,H1) (null) , 0.000000 , 0
если убрать приведение типов, то будет ошибка 'NULL' - expression of 'void' type is illegal
занятно, получается, что nput string может быть инициализирован void
NULL - инициализация. Специально же в примере показана не input-строка.
NULL / NIL (в прочих терминах) не могут быть инициализацией константной сущности строки.
хотя-бы в потому что mql строка не является "указателем" как в C. У неё нет специального состояния "вообще совсем ничто"
PS (о как, сам от себя такого не ожидал)
У неё нет специального состояния "вообще совсем ничто"
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2020.01.26 15:54
Каждый день это состояние использую.
хотя-бы в потому что mql строка не является "указателем" как в C. У неё нет специального состояния "вообще совсем ничто"
PS (о как, сам от себя такого не ожидал)
увы нет, строка в MQL это сущность с выделенной памятью, @Ilyas объяснял, почему StringBufferLen() может не показывать длину строки, а показывает именно выделенную память под хранение строки
Каждый день это состояние использую.
вооообще не показатель, я так в MQL4 через StringConcatenate() распринтовывал указатели на любой обьект, т.е. работа встроенных функций реализована не по правилам MQL )))
вооообще не показатель, я так в MQL4 через StringConcatenate() распринтовывал указатели на любой обьект, т.е. работа встроенных функций реализована не по правилам MQL )))
Без разницы, как внутри.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
Igor Makanu, 2020.01.26 22:27
Без разницы, как внутри.
дополнил свой пост, Вашим примером
пару раз еще делал эксперименты с input string s = NULL;
насколько я понял, что пока мы не пытаемся использовать значение инпут-переменной - это значение будет NULL, но в тот момент если мы попробуем присвоить значение этой инпут переменно другой переменной или просто распринтовать эту инпут-переменную, то этот NULL исчезает, т.е. этой инпут-стриг переменной будет выделена память
насколько я понял, что пока мы не пытаемся использовать значение инпут-переменной - это значение будет NULL, но в тот момент если мы попробуем присвоить значение этой инпут переменно другой переменной или просто распринтовать эту инпут-переменную, то этот NULL исчезает, т.е. этой инпут-стриг переменной будет выделена память
Механизм работы input-переменной подробно описал выше.
Без разницы, как внутри.
есть (всё ещё) специфика работы (отношений) разыменования сущностей (ну нету в mql указателей, он не С, пусть будут сущности)
input - это такой const объявляемый при запуске.ему физически нельзя дать значение "НИЧЕГО"
const string nothing=NULL; /// <--- ЭТО ЧТО ?
Да, наверное, такое поведение - просто "защита от дурака".
Видно, ввиду того, что input переменная должна быть проинициализирована, то в инпут = NULL исскуственно приравнивается к ="", когда переменная уже занимает хотя бы один байт в памяти.
В MQL5 записи:
абсолютно идентичны. Памяти под переменную не выделяется. Во всяком случае я не нашел различий.
А в java, например, такие записи имеют небольшое различие, не смотря на то, что в обоих случаях тоже не выделяется памяти под переменную. Первый вариант (String str = null;) будет считаться проинициализированным, хотя памяти под переменную не выделяеся, и переменную можно распечатать как пустую. А во втором случае(String str;) при попытке печати переменной будет генерироваться ошибка о непроинициализированной переменной.
Т.е. MQL5 в этом плане более толерантный.
Что лучше, даже не знаю.
Как это память под переменную не выделяется?
Память выделяется, и переменная содержит произвольный мусор.
А то что стринг не выводит не каких значений, логично же что буфер пустой.
Как это память под переменную не выделяется?
Память выделяется, но переменная не содержит произвольный мусор.
А то что стринг не выводит не каких значений, логично же что буфер пустой.