Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Компилятор выдает ошибку, когда я указываю путь к иконке в директории terminal_data_directory, ошибка говорит, что невозможно открыть файл в папке виртуального хранилища, хотя я не указал папку в виртуальном хранилище. Я указываю папку в каталоге_данных_терминала.
Единственный способ заставить его работать - поместить файл в ту же папку, что и исходный код, и не указывать путь вообще, просто #property icon "MyIcon.ico".
Привет, на всякий случай, если у кого-то возникла проблема с #property icon "\\\Images\\\MyIcon.ico", вы должны учитывать размер иконки 96x96 px или выше. Я тоже столкнулся с этой ошибкой, но теперь все работает.
Я заметил, что компилятор выполняет приведение, которого я не ожидал.
У меня есть следующий код:
где класс объекта key - MT4String, а функция getKey() возвращает более общий класс. То же самое происходит и с объектом button. Явное приведение опущено.
Оригинальный код выглядел следующим образом:
В JAVA было бы необходимо явное приведение, но компилятор MQL4 также корректно работает с этим синтаксисом.
Является ли это неявное приведение особенностью, которая действует и в C++? Или это ошибка?
Я не специалист по C++, но переход от базового класса к дочернему называется downcasting, и, согласно этой странице, похоже, что в C++ downcasting должен быть явным. (как в Java)?
Так как MQL4 позволяет неявный downcasting, это либо "фича", либо баг :)
Если это "особенность", то это, вероятно, означает, что компилятор не сможет предупредить кодера о потенциальной ошибке, так что это не очень хорошая особенность. И C++, и Java требуют явного даунскастинга по какой-то причине?
Более того, в MQL4 нет встроенного способа проверки класса объекта (например, instanceOf и т.д.), поэтому избежать ошибки во время выполнения невозможно, если только не реализовать собственную проверку "типа"...
Я не специалист по C++, но переход от базового класса к дочернему называется downcasting, и, согласно этой странице, похоже, что в C++ downcasting должен быть явным. (как в Java)?
Так как MQL4 позволяет неявный downcasting, это либо "фича", либо баг :)
Если это "особенность", то это, вероятно, означает, что компилятор не сможет предупредить кодера о потенциальной ошибке, так что это не очень хорошая особенность. И C++, и Java требуют явного даунскастинга по какой-то причине?
Более того, в MQL4 нет встроенного способа проверки класса объекта (например, instanceOf и т.д.), поэтому избежать ошибки во время выполнения невозможно, если только не реализовать собственную проверку "типа"...
Да, я бы тоже оценил instanceof или ".class", но, насколько я заметил, их нет даже в C++. Даже отладчик MQL4 не знает тип наблюдаемого объекта. Меня это не сильно волнует, потому что функция ООП в MQL4 реализована на удивление очень хорошо, и если бы это был единственный баг, то я бы сказал "ура". Мне просто было интересно, следует ли это какому-то существующему шаблону, но, похоже, это скорее баг.
в старом MT4 я использовал dll файл для создания советника для торговли в один клик.
Я могу вводить параметры... LOT, TP SL прямо в белом текстовом поле.
Когда я нажимаю кнопку купить или продать... мой советник считывает введенный текст в поле.
В новом MT4 я вижу функцию кнопки... но я не могу найти функцию для создания и чтения текстового поля как это.
в старом MT4 я использовал dll файл для создания советника для торговли в один клик.
Я могу вводить параметры... LOT, TP SL прямо в белом текстовом поле.
Когда я нажимаю кнопку купить или продать... мой советник считывает введенный текст в поле.
В новом MT4 я вижу функцию кнопки... но я не могу найти функцию для создания и чтения текстового поля как это.
Для ввода с клавиатуры есть объект типа OBJ_EDIT. Он вызывает событие CHARTEVENT_OBJECT_ENDEDIT , если вы нажимаете клавишу Enter. Но похоже, что клавиша Enter - это единственный способ завершить редактирование, например, щелчок мышью вне границ объекта не завершает редактирование. Это мешает мне развернуть объект как недружественный пользователю.
Более того, если в качестве начального значения задана пустая строка, то вместо нее появляется автоматический текст "Edit" (и это слово даже можно редактировать), что очень смущает.
Я создал эту кнопку для редактирования текста внутри нее, и я хотел бы прочитать и преобразовать текстовую строку в переменную double или int, но это не работает и не выводит сообщение "Текст в поле Edit объекта с именем" был изменен".
вы можете мне помочь?