Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2591
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
У меня на определенном этапе строковый массив был сохранен в файл.
Позже из другого индикатора данные считываются из этого файла в строковый массив. Часть параметров необходимо преобразовать из string в enum. Как это сделать, готовой функции судя по всему нет?
В ENUM переводить нет необходимости. Достаточно явного приведения типа string в int
Я не сразу понял проблему…
Видимо записано в массив "OBJ_HLINE" и эту строку вам надо перевести в ENUM_OBJECT…
Но вот беда… Это сложней чем может казаться на первый взгляд.
Решение гораздо проще, если в файл писать не EnumToString(OBJ_HLINE) а (string)OBJ_HLINE… Тогда в файл запишется "1" что при прочтении легко переведётся в int или другой целочисленный тип.
может проще string в файл писать цифрами, и в switch получать нужный результат?
В стринговом массиве записаны слова (например имя объекта) и цифры, но потом при считывании надо преобразовать некоторые стринги (типа OBJ_HLINE в виде цифр) в enum.
В ENUM переводить нет необходимости. Достаточно явного приведения типа string в int
Вечером проверю. Спасибо!
Вечером проверю. Спасибо!
Я не сразу понял проблему
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Alexey Viktorov, 2025.04.14 06:24
В ENUM переводить нет необходимости. Достаточно явного приведения типа string в int
Я не сразу понял проблему…
Видимо записано в массив "OBJ_HLINE" и эту строку вам надо перевести в ENUM_OBJECT…
Но вот беда… Это сложней чем может казаться на первый взгляд.
Решение гораздо проще, если в файл писать не EnumToString(OBJ_HLINE) а (string)OBJ_HLINE… Тогда в файл запишется "1" что при прочтении легко переведётся в int или другой целочисленный тип.
а (string)OBJ_HLINE… Тогда в файл запишется "1" что при прочтении легко переведётся в int или другой целочисленный тип.
В массиве именно так и записано.
Но в ObjectCreate() с этим возникли какие-то проблемы (вечером буду проверять).
В массиве именно так и записано.
Но в ObjectCreate() с этим возникли какие-то проблемы (вечером буду проверять).
Вариант рабочий, но излишне громоздкий. Любое перечисление имеет целочисленное значение. Следовательно изгаляться с такими переводами никакого смысла нет. Просто надо поставить не перечисление, а целочисленное его значение.
string obj_txt; ENUM_OBJECT obj_type; //----- if(obj_txt=="OBJ_VLINE") obj_type=OBJ_VLINE if(obj_txt=="OBJ_HLINE") obj_type=OBJ_HLINE;
На основе Вашего примера, совместно с ИИ, пришли к коду представленному ниже (может кому-нибудь пригодится).
Спасибо!
На основе Вашего примера, совместно с ИИ, пришли к коду представленному ниже (может кому-нибудь пригодится).
Спасибо!
Я ещё не видел ни одного нормального кода от искусственного идиотизма.
Проверьте вот это
И проверьте что вернёт функция ObjectTypeFromNumber в таком случае
Проверьте вот это
И проверьте что вернёт функция ObjectTypeFromNumber в таком случае
Дело в том что случаи с '-1' в этом конкретном коде невозможны, т.к. данные записываются в массив с реальных объектов по заданным условиям. Я бы даже не стал использовать подобные проверки, но раз уж ИИ добавил их, пусть останутся как есть. Ну а если кому-то потребуется подобная функция, пусть подгоняет ее для себя.