Добрый день
Никак не могу подключиться из проекта с++ Builder
Вот код
void __fastcall TForm1::FormActivate(TObject *Sender) { AnsiString path_MemMap32=ExtractFileDir(ParamStr(0)) + "\\dll\\MemMap32.dll"; AnsiString path_file="Local\\Monitor_USDCHF"; wchar_t * UnicodeString = new wchar_t[path_file.WideCharBufSize()]; path_file.WideChar(UnicodeString,path_file.WideCharBufSize()); delete [] UnicodeString; int (__stdcall *MemOpen) (char * path,int size,int mode,int &err); void (__stdcall *MemClose)(int hmem); int (__stdcall *MemRead)(int hmem, int v[], int pos, int sz, int &err); HINSTANCE hDLL= LoadLibrary(path_MemMap32.c_str()); if(!hDLL) {StatusBar1->SimpleText="I can't load dll";} else {StatusBar1->SimpleText="path_MemMap32.dll load";} MemOpen= (int(__stdcall *)(char * path,int size,int mode,int &err)) GetProcAddress(hDLL,"MemOpen"); MemClose=(void(__stdcall*)(int hmem)) GetProcAddress(hDLL,"MemClose"); MemRead= (int(__stdcall *)(int hmem, int v[], int pos, int sz, int &err)) GetProcAddress(hDLL,"MemRead"); hmem=MemOpen(path_file.c_str(),-1,0,err); StatusBar1->SimpleText=err; }
В статус бар пишет 2 тоесть файл не найден, пробовал как в анси так и в юникоде отправлять путь к файлу
В МТ5 файл эксперт создал файл и обновляет в нем котировки
если у вас C++ - так зачем же вы решили DLL использовать?
там ведь исходный код есть полностью.
если у вас C++ - так зачем же вы решили DLL использовать?
там ведь исходный код есть полностью.
Хотел уже готовособранную длл поюзать
причем так чтобы не было проблем со спрариванием в МТ4-5
... попробую посмотреть исходники от длл
Хотел уже готовособранную длл поюзать
причем так чтобы не было проблем со спрариванием в МТ4-5
... попробую посмотреть исходники от длл
Какой у Вас виндоус?
win7x64
В билдере что то не получается написать
икнлюду вот так
#include <vcl.h> #include <stdafx.h> #include "BuySell.h"Получаю
[C++ Fatal Error] afxv_w32.h(14): F1003 Error directive: WINDOWS.H already included. MFC apps must not #include <windows.h>
Пробовал сначала подключать
afxv_w32.h
не помогло
пробовал сначала подключать afxwin.h - тоже не помогло.
пробовал сначала подключать afxwin.h - тоже не помогло.
поищите еще как вариант подключенный afx.h
Да так заинклюдилась без ошибок буду дальше пробовать. Спасибо
...
Получилось - работает все
а на CloseHandle почему то не закрывается
у меня в ехе сервер (создает обновляет, и закрывать должен) а в терминале стоит приемник так вот он после CloseHandle в сервере видит неудаленный объект в памяти
у меня в ехе сервер (создает обновляет, и закрывать должен) а в терминале стоит приемник так вот он после CloseHandle в сервере видит неудаленный объект в памяти
а вы ожидаете, что память должна полностью очищаться при закрытии хендла?
Добрый день
Скажите пожалуйста направление развития мысли.
Есть задача раздавать сигналы внутри одного компьютера (сервера) на много терминалов, критичны задержки более 1-3 мс
реализовал в связки клиент сервер, 1-2 счета работают приемлемо причем чтобы не вешать терминал сделал чтение из памяти с использованием Sleep(1) в цикле - если память принимает необходимое значение то выполняем некоторое действие. Но когда терминалов даже 5 то 1 мс тут уже не обойдешься иначе начитает кулер на процессоре завывать ...
я давно не следил за новостями может в мт5 появились пользовательские события по аналогии OnTrade чтобы можно было их привязать к модификации памяти
а так пробовал считывать без задержек 100 000 циклов (по 8 байт) проходит за 670 мс
... может еще убавить данных до 4 байт.
... есть еще наверно вариант пересобрать вашу длл чтобы ее зациклить внутри - не возвращая данные пока они не примут нужные значения. но как интересно себя поведет МТ5 на столь долгое ожидание возврата из внешней функции это еще вопрос.
Есть задача раздавать сигналы внутри одного компьютера (сервера) на много терминалов, критичны задержки более 1-3 мс
реализовал в связки клиент сервер, 1-2 счета работают приемлемо причем чтобы не вешать терминал сделал чтение из памяти с использованием Sleep(1) в цикле - если память принимает необходимое значение то выполняем некоторое действие. Но когда терминалов даже 5 то 1 мс тут уже не обойдешься иначе начитает кулер на процессоре завывать ...
я давно не следил за новостями может в мт5 появились пользовательские события по аналогии OnTrade чтобы можно было их привязать к модификации памяти
у вас ведь память модифицировать имеет право только сервер. клиенты её читают.
- посмотрите в сторону Pipe. там "события" прихода данных реализованы как само собой понятное - есть данные взяли, нет ждем.
да, сервер придется написать или содрать с MSDN, а клиенты готовые можно использовать прямо в MQL5
с периодичностью опроса тут к сожалению тоже никак нельзя разрулить. При Sleep(1) в таком количестве экспертов шуметь не должно даже при работе с памятью. Вам надо проверить тайминг работы функций может где то лишние проходы имеются и нагрузка.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Мониторинг котировок (пример для маппинга):
Пример использования DLL для работы с функциями File Mapping.
В данном примере запущенный эксперт создает виртуальный файл в памяти и начинает обновлять в нем котировку символа.
При запуске экспертов в других терминалах, эти эксперты открывают созданный файл и аналогично начинают обновлять свои котировки в нем.
Таким образом, эксперты через один общий файл обмениваются своими котировками.
Автор: Alex Sergeev