
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Хорошо хоть не пробуете прочитать файл в памяти после перезапуска компьютера...
Ну то есть я понял, что мне таким образом не удастся передавать данные через память между двумя терминалами?
А какой путь будет корректным? Нужно реализовать передачу строки текста из одного терминала в другой с помощью MemMapLib.mqh.
Ну то есть я понял, что мне таким образом не удастся передавать данные через память между двумя терминалами?
удастся
Нужно реализовать передачу строки текста из одного терминала в другой с помощью MemMapLib.mqh.
создаете файл, записываете, потом читаете
примерно в таком порядке
https://www.mql5.com/ru/code/10571
Какой максимальный объём данных я смогу записать в открытый файл в памяти и затем считать?
У меня после 4096 начинает валиться эксперт на этом месте.
Попытался записать записать в файл строку длиной 200 символов, получил ошибку выхода за размерность массива в строке 214 библиотеки. Получается что при определении размера принимающего массива не учитывается размер заголовка.
Получается <..>
не получается.
Код и распринтовку приведите
не получается.
Код и распринтовку приведите
С размерами разобрался. Но попытался прочитать файл другим объектом и получил на выходе тишину. Где ошибка?
С размерами разобрался. Но попытался прочитать файл другим объектом и получил на выходе тишину. Где ошибка?
//--- Закрываем запись
это называется не закрываем запись, а закрываем и удаляем файл .
поэтому
//--- Открываем файл на чтение
вы пытаетесь открывать то, чего уже нет.это называется не закрываем запись, а закрываем и удаляем файл .
поэтому
вы пытаетесь открывать то, чего уже нет.Такс, тогда становится понятным. Я поступал по аналогии работы с обычными файлами, когда закрытие приводит именно к закрытию и освобождению, а не удалению файла.
это называется не закрываем запись, а закрываем и удаляем файл .
поэтому
вы пытаетесь открывать то, чего уже нет.Просмотрев код библиотеки я увидел что файл удаляется не только при непосредственном вызове функции Close() класса CMemMapFile, но и при удалении указателя на объект этого класса, так как в деструкторе класса вызывается данная функция. Я немного в недоумении. Получается что динамический метод создания объектов класса использован быть не может, если запись и чтение файла используются в разных контекстах вызова (областей видимости). К примеру один график терминала записывает данные в файл, второй читает данные и удаляет этот файл. Получается что переменную объекта нужно всегда держать на глобальном уровне, чтобы файл принудительно не удалялся. Так же не ясно можно ли обходиться без указания размера считываемых данных. То есть при записи размер данных нам известен, но при чтении на другом графике нам заранее размер данных может быть не известен, как например в случае со строчными величинами. Вероятно либо я что-то недопонял, либо есть что еще подкрутить в библиотеке.
Виноват. Перепроверил без использования указателя, следовательно без применения delete. В этом случае при выходе из области видимости (из функции) локальная переменная объекта класса уничтожается без явного вызова деструктора.
Остался вопрос с размером принятых данных на стороне получателя.