| / | Форум |
|
max_cpr
22.08.2006 22:39
Господа разработчики! Разрулите, pls такую ситуацию (код специально
упрощен, чтоб оставить только суть вопроса):
1. Вариант скрипта (tst1.mq4) string lsym = ""; string _GetVar(){ return(lsym); } int _SetVar(string sym){ lsym = sym; Print("Sym:"+sym); return(1); } int start(){ _SetVar(Symbol()); Print(" os___:"+_GetVar()); }Работает как и положено, т.е. выдаются такие сообщения в лог: tst1 EURUSD,H1: removed tst1 EURUSD,H1: os___:EURUSD tst1 EURUSD,H1: Sym:EURUSD tst1 EURUSD,H1: loaded successfully Compiling 'tst1' 2. Вариант - функции _SetVar и _GetVar выносим во внешнюю библиотеку, т.е. et1.mq4 #property library string lsym = ""; string _GetVar(){ return(lsym); } int _SetVar(string sym){ lsym = sym; Print("Sym:"+sym); return(1); }и заголовок: et1.mqh #import "et1.ex4" string _GetVar(); int _SetVar(string sym);после чего в скрипте остается (tst.mq4) #include <et1.mqh> int start(){ _SetVar(Symbol()); Print(" os___:"+_GetVar()); } Но вот результат выполнения - уже несколько иной: tst EURUSD,H1: removed et1 EURUSD,H1: removed tst EURUSD,H1: os___: et1 EURUSD,H1: Sym:EURUSD et1 EURUSD,H1: loaded successfully tst EURUSD,H1: loaded successfully т.е. переменная в библиотеке пуста, либо неправильно возвращается через функцию. Если еще точнее - на другой машине этот же тест выгоняет мусор из памяти. В архиве - тот же код, в исходниках + printscreen. |
|
Бесплатная Groupware для групп разработчиков Установите систему групповой работы TeamWox и объедините усилия всех разработчиков. Это поможет вашей команде работать быстрее и организованнее. Благодаря TeamWox станет намного проще ставить задачи и контролировать их выполнение. |
3649 |
Renat
22.08.2006 22:49
Про эту проблемы мы знаем.
Дело в том, что сейчас есть ограничение на передачу объектов (а строка - это объект) из других импортированных библиотек. Суть проблемы в том, что код и данные испортируемой библиотеки загружаются в отдельное рабочее пространство. Я бы рекомендовал не импортировать EX4 библиотеки (это медленный путь, почти как загрузка COM объекта), а включать их полный исходный код через #include - так будет работать максимально быстро и в одном рабочем пространстве. |
|
sultanboy
12.09.2009 21:35
А где достать этот TST1 ?
|
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий