| / | Форум |
|
Tinedel
17.03.2006 18:25
Всем доброе время суток.
Столкнулся с проблемой, не знаю что делать... в начале своего кода советника написал: #import "MetaTraderIface.dll" string ShowMessage(int& param); #import "user32.dll" int MessageBoxA(int hWnd ,string szText,string szCaption,int nType); потом в init написал int t = 1; Alert(ShowMessage(t)); int i = MessageBoxA(0,"test","test",0); в итоге не вызываеться ни одна ни вторая ф-ция... Флажок про разрешения импорта стоит. пробовал пихать в старт --- все равно никакого эффекта. |
|
Организуйте багтрекинг и техсаппорт для своей компании В TeamWox имеются все для того чтобы организовать багтрекинг. Интегрировав модуль Сервисдеск с веб-сайтом, Вы сможете получать заявки своих клиентов напрямую в TeamWox. Более того, вся переписка с клиентами автоматически распознается и попадает в архив, где ее без труда можно найти в будущем. |
3646 |
Renat
18.03.2006 00:09
А что в логах пишется?
Кстати, передача параметров по ссылке в MQL4 идет по хитрому, не так как в C/C++. Если используется передача параметра как (int& param), то обработка должна быть соответствующая. Да еще импортируемая из DLL функция возвращает string, что совершенно невозможно. string - это внутренний тип данных MQL4 и его никто не имеет права создавать(выделять память) вне штатных функций MQL4. Даже если сформировать и подсунуть совместимый тип string, то его судьба совершенно непредсказуема. |
|
Tinedel
18.03.2006 14:56
Спасибо за ответ :)
Ух ты оказываеться сколько всяких ньюансов. Где про них можно почитать? а то как-то в документации по импорту сказано просто импортируйте и все... Какой именно лог надо смотреть? ни в одном из тех кот. я нашел за день эксперементов я ничего вразумительного не увидел... С вызовом МессаджБокса сам разобрался... надо было в кач. первого параметра NULL указать... Я вроде попробовал сделать абсолютно прямолинейную функцию по типу retutn 1 впоследствии... Все равно не помогло... |
3646 |
Renat
18.03.2006 17:25
Нормально воспринимается в качестве возврата функции из импортированной
DLL только int.
Логи во вкладке "Эксперты" и "Журнал". |
|
Tinedel
18.03.2006 18:39
в логах пишеться не могу загрузить name.dll (error 126)
|
|
alexjou
19.03.2006 03:44
Нормально воспринимается в качестве возврата функции из импортированной
DLL только int. А double? То есть для дробных чисел надо делать арифметику с масштабированием?
У меня возвращаются почти исключительно double. Никаких несообразностей
пока что не замечал. Может, я что-то не так делаю?
|
3646 |
Renat
19.03.2006 09:15
alexjou: Извините за ошибку, я имел в виду, что нормально возвращаются
обычные типы данных int, bool, double.Нормально воспринимается в качестве возврата функции из импортированной
DLL только int. А double? То есть для дробных чисел надо делать арифметику с масштабированием?
У меня возвращаются почти исключительно double. Никаких несообразностей
пока что не замечал. Может, я что-то не так делаю? |
|
RickD
21.03.2006 03:48
Можно возвращать int, double, bool, string.
string нужно возвращать как char*. |
3646 |
Renat
21.03.2006 14:33
RickD: string нужно возвращать как char*. Renat: Да еще импортируемая из DLL функция возвращает string, что совершенно невозможно. string - это внутренний тип данных MQL4 и его никто не имеет права создавать(выделять память) вне штатных функций MQL4. Даже если сформировать и подсунуть совместимый тип string, то его судьба совершенно непредсказуема. |
|
Itso
21.03.2006 15:38
И все таки - если нужно возвратить стринг - что делать? Конвертировать
стринг до масив int? Или и так нельзя и нужно до double?
|
|
RickD
23.03.2006 03:33
Можно так:
Вот не знаю, strdup для возвращаемой строки нужно делать или нет? |
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий