Удивительно, как эта поделка вообще у кого-то заработала. С такими-то глюками внутри...
Ниже фрагмент из CMemMapApi::Write() ArrayResize(src, size); memcpyX(src, view, size); // взяли байтбуфер
for(int i=0; i
К сожалению, FileMapping имеет один существенный минус. Если дочернее приложение (считывающее данные) по какой-то причине корректно (вызовkernel32::UnmapViewOfFileиkernel32::CloseHandle) не завершило свою работу, то "файл" остается висеть в памяти до тех пор, пока не будут закрыты все процессы, откуда было открытие (вызов kernel32::OpenFileMappingW и kernel32::MapViewOfFile). В частности, нельзя поменять его размер - переоткрыть (закрыть и заново открыть).
Не нашел решение проблемы. С данной библиотекой на такую ситуацию нарваться тяжело, т.к. каждое действие в ней начинается с открытия и заканчивается закрытием. Именно с этим связана ее медлительность. Но все равно можно нарваться на данную ошибку. И тогда будет аварийное завершение MQL-программы с таким сообщением.
поэтому он должен оценить x и ввести значение в ST2 для структуризации. с технической точки зрения При использовании одноуровневой индирекции ST2 x строчит имя введенного макроса но при использовании двойного слоя он строчит значение введенного макроса
Использую MT5 Version: 5.00 build 5370 17 Oct 2025.
Почему-то при попытке скомпилировать файл memmap.mq5 получаю ошибки:
memmap.mq5
MemMapLib.mqh
wrong parameters count, 4 passed, but 3 requires MemMapLib.mqh 2799
long CMemMapFile::Open(string,int,int) MemMapLib.mqh 25119
call resolves to 'long CMemMapFile::Open(string,int,int)' instead of 'long CMemMapApi::Open(string,int,int,int&)' due to new rules of method hiding MemMapLib.mqh 2799
see declaration of function 'CMemMapFile::Open' MemMapLib.mqh 25119
see declaration of function 'CMemMapApi::Open' MemMapLib.mqh 12219
wrong parameters count, 3 passed, but 1 requires MemMapLib.mqh 2929int CMemMapFile::Fill(uchar) MemMapLib.mqh 25314
call resolves to 'int CMemMapFile::Fill(uchar)' instead of 'int CMemMapApi::Fill(long,uchar,int&)' due to new rules of method hiding MemMapLib.mqh 2929
see declaration of function 'CMemMapFile::Fill' MemMapLib.mqh 25314
see declaration of function 'CMemMapApi::Fill' MemMapLib.mqh 12414
wrong parameters count, 4 passed, but 1 requires MemMapLib.mqh 29916int CMemMapFile::Grows(int) MemMapLib.mqh 25514
call resolves to 'int CMemMapFile::Grows(int)' instead of 'long CMemMapApi::Grows(long,string,int,int&)' due to new rules of method hiding MemMapLib.mqh 29916
see declaration of function 'CMemMapFile::Grows' MemMapLib.mqh 25514
see declaration of function 'CMemMapApi::Grows' MemMapLib.mqh 125193 errors, 3 warnings 33
Кто-нибудь может мне подсказать что я делаю не так? И как это исправить?
fxsaber #: Исходники библиотеки не соответствуют текущим требованиям языка MQL5.
А как-то можно это поправить? Или это нужно исходники все перерабатывать и без автора этого сделать невозможно? Вроде всего 3 ошибки тут компилятор выдал. Было бы здорово, если это можно было бы откорректировать.
А как-то можно это поправить? Или это нужно исходники все перерабатывать и без автора этого сделать невозможно? Вроде всего 3 ошибки тут компилятор выдал. Было бы здорово, если это можно было бы откорректировать.
А вот я уже сам подправил код. Кому нужно можете использовать. С ним эксперт компилируется успешно.
Я добавил вот это, начиная с 251 строки:
using CMemMapApi::Open;
using CMemMapApi::Close;
using CMemMapApi::Fill;
using CMemMapApi::Grows;
using CMemMapApi::Write;
using CMemMapApi::Read;
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Нужно было передавать огромные объемы (гигабайты) данных. Реализация через данную библиотеку, к сожалению, показала сверх-низкую производительность.
Пришлось полностью переделать, используя исходный набор DLL. Получилось быстро.
К сожалению, FileMapping имеет один существенный минус. Если дочернее приложение (считывающее данные) по какой-то причине корректно (вызов kernel32::UnmapViewOfFile и kernel32::CloseHandle) не завершило свою работу, то "файл" остается висеть в памяти до тех пор, пока не будут закрыты все процессы, откуда было открытие (вызов kernel32::OpenFileMappingW и kernel32::MapViewOfFile). В частности, нельзя поменять его размер - переоткрыть (закрыть и заново открыть).
Не нашел решение проблемы. С данной библиотекой на такую ситуацию нарваться тяжело, т.к. каждое действие в ней начинается с открытия и заканчивается закрытием. Именно с этим связана ее медлительность. Но все равно можно нарваться на данную ошибку. И тогда будет аварийное завершение MQL-программы с таким сообщением.
Почему-то при попытке скомпилировать файл memmap.mq5 получаю ошибки:
Кто-нибудь может мне подсказать что я делаю не так? И как это исправить?
Исходники библиотеки не соответствуют текущим требованиям языка MQL5.
А как-то можно это поправить? Или это нужно исходники все перерабатывать и без автора этого сделать невозможно? Вроде всего 3 ошибки тут компилятор выдал. Было бы здорово, если это можно было бы откорректировать.
А как-то можно это поправить? Или это нужно исходники все перерабатывать и без автора этого сделать невозможно? Вроде всего 3 ошибки тут компилятор выдал. Было бы здорово, если это можно было бы откорректировать.
А вот я уже сам подправил код. Кому нужно можете использовать. С ним эксперт компилируется успешно.
Я добавил вот это, начиная с 251 строки: