Обсуждение статьи "Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?" - страница 6

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Используйте wchar_t вместо char
wchar_t уже проходили, не помогает. Проблема то кроется в самом mql.
Что это за код? Копирование указателя - это всего лишь копирование 4 байт памяти, содержащей адрес.
В этом случае Вам может помочь memcpy, если Вы заранее (в программе на MQL5) позаботитесь о распределении необходимого буфера в приёмной строке.
Что это за код? Копирование указателя - это всего лишь копирование 4 байт памяти, содержащей адрес.
В этом случае Вам может помочь memcpy, если Вы заранее (в программе на MQL5) позаботитесь о распределении необходимого буфера в приёмной строке.
Да причем тут указатель то. Этот код прекрасно работает в mql4. C переходом на mql5 уже нет.
Тут все дают советы, но хоть бы один показал реально работающий пример как передать в dll функцию строку из mql5?
...
Вопрос
В чем проблема? Как по-человечески передать строку из MQL в dll?
1) Спасибо за сообщение. Ошибка исправлена. Ждите обновлений.
2) Вам правильно подсказали про wchar _t - строки в MQL5 юникодные
3) Что значит "При проверке в визул дебуге"?
4) Правильно использовать так:
Спасибо вам за то что помогаете таким горе-программистам как я. :) Ваш пример внес определенную ясность в мою ситуацию.
Воспрянув духом, решил написать(а вось кому пригодиться) функцию для конвертации строки из wchar_t в старую добрую char. Эта функция может понадобиться тем у кого в проектах очень много кода использует тип char. А поскольку MQL5 передает только wchar_t, то проще конвертнуть на входе чем переписывать пол кода dll.
Спасибо вам за то что помогаете таким горе-программистам как я. :) Ваш пример внес определенную ясность в мою ситуацию.
Воспрянув духом, решил написать(а вось кому пригодиться) функцию для конвертации строки из wchar_t в старую добрую char. Эта функция может понадобиться тем у кого в проектах очень много кода использует тип char. А поскольку MQL5 передает только wchar_t, то проще конвертнуть на входе чем переписывать пол кода dll.
DLL-функции, которые принимают строки в виде char *, конечно же принимают указатель на первый элемент массива типа char. То есть, при описании импорта таких функций в MQL5-программе надо использовать чаровский массив в качестве строкового параметра.
Для таких случаев мы предусмотрели функцию StringToCharArray, которая правильно конвертирует строки в национальном алфавите. Функция wcstombs не всегда это делает правильно.
Статья интересная и полезная.
1) То что прилагаются исходники - это круто. Хех, тока вот где же откомпилированная DLL? Понятно что Мегапрогеру её создать не проблема.
А если я не Мега и не прогер?! :)
2) В статье используется MS компилятор. А я с ним не дружу.:) У меня BC++. Можно ли выложить исходники заточенные для него?
(ИМХО , наверное лучше сразу всегда выкладывать исходники для MS и BC - это две ведущие компании, но стили написания исходников у них разные).
Мы стараемся не выкладывать потенциально опасный код (DLL), чтобы лишний раз не нервировать пользователей. К тому же это лишь тестовый пример.
К сожалению, под рукой нет Borland C++ компилятора. Попробуйте приспособить самостоятельно - там ведь меньше одной страницы кода.
yu-sha:
Не слишком ли высокие цели ставят себе разработчики?
И зачем изобретать велосипед, если уже давным-давно все сделано (C, Delphi, ...)?
Надо делать не то, что кажется правильным, а то, что выгодно. Потому что выгодность - это и есть правильность. А в данном случае (MT5+MQL5+сервисы) - это колоссальная выгода (окупится в десятки-сотни раз) для MetaQuotes и огромная выгода для трейдеров. Только не сразу.
Всегда полезно посмотреть широко и вперед на, как минимум, 5 лет. MetaQuotes это сделали.