Да вопрос очень интересный, и актуальный
На текущий момент каждый модуль/библиотека загружаются в собственное адресное пространство и имеют собственные хипы памяти. То есть, объект передать во внешнюю EX5 библиотеку нельзя.
Отлично. Будем ждать вердикт
Спасибо!
Давайте определимся, что значит передавать дескрипторы объекта между скриптами. Слово "скрипт" может быть истолковано по-разному, поэтому рассмотрим варианты.
1. Скрипты - это разные MQL5-программы, которые в результате препроцессорных команд #include объединяются в один исполняемый EX5-файл. В этом случае передача дескрипторов между скриптами возможна.
2. Первый скрипт - это отдельная EX5-программа (эксперт, скрипт или пользовательский индикатор); второй скрипт - это EX5-библиотека, подключаемая к первому скрипту при помощи команды #import. В этом случае передача дескрипторов между скриптами также возможна. Так как EX5-библиотека работает в адресном пространстве подключившей её EX5-программы.
3. Первый скрипт - это отдельная EX5-программа (эксперт, скрипт или пользовательский индикатор); второй скрипт - тоже отдельная EX5-программа (эксперт, скрипт, индикатор). Передача дескрипторов между отдельными EX5-программами невозможна. И вряд ли мы откроем такую возможность в дальнейшем.
4. Первый скрипт - отдельная EX5-программа с подключённой EX5-библиотекой; второй скрипт - другая отдельная EX5-программа с подключённой той же EX5-библиотекой. Передача дескриптора между скриптами при помощи "общей" EX5-библиотеки также невозможна. Так как у каждого из скриптов собственная копия EX5-библиотеки, которые работают в разных адресных пространствах соответствующих скриптов.
5. Первый скрипт - отдельная EX5-библиотека, подключённая к EX5-программе; второй скрипт - другая отдельная EX5-библиотека, подключённая к той же EX5-программе (или подключённая к первой EX5-библиотеке). В этом случае передача дескрипторов между первой и второй библиотекой, а также между EX5-программой и любой из этих библиотек возможна. так как все они работают в одном и том же адресном пространстве.
4. Первый скрипт - отдельная EX5-программа с подключённой EX5-библиотекой; второй скрипт - другая отдельная EX5-программа с подключённой той же EX5-библиотекой. Передача дескриптора между скриптами при помощи "общей" EX5-библиотеки также невозможна. Так как у каждого из скриптов собственная копия EX5-библиотеки, которые работают в разных адресных пространствах соответствующих скриптов.
3. Первый скрипт - это отдельная EX5-программа (эксперт, скрипт или пользовательский индикатор); второй скрипт - тоже отдельная EX5-программа (эксперт, скрипт, индикатор). Передача дескрипторов между отдельными EX5-программами невозможна. И вряд ли мы откроем такую возможность в дальнейшем.
На текущий момент каждый модуль/библиотека загружаются в собственное адресное пространство и имеют собственные хипы памяти. То есть, объект передать во внешнюю EX5 библиотеку нельзя.
Поддерживаю - нужна четкая ИЗОЛЯЦИЯ между "екзешниками".
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Еще раз повторим, что в отличие от C++, переменная hobject из вышеприведенного примера не является указателем на память, а является дескриптором объекта.
Хотелось бы узнать можно ли таскать этот дескриптор между скриптами? Хотелось бы что-то вида