Проблема с новой версией редактора для MT4

 

Всем привет, сегодня решил перегрузить комп, открываю терминал, выясняю что редактор обновился до 5 версии, все новые компиляции не принимаются текущей версии терминала, кто с этим столкнулся, как быть?

Текущая версия МТ4 4.0 build 509 и редактора 5.0 build 882

Почему если и было такое серьезное обновление, то не обновился сам терминал?

 

509 уже огого сколько времени в работе, считай полгода. А сейчас наверное ДЦ кривое обновление выкинуло, для редактора МЕ версии 882 должен быть МТ4 билд не ниже 529. Лучше обновитесь сами по-нормальному, в ветке билда 574 есть описание.

3 февраля обещали релиз нового терминала, а до тех пор бетатестинг уже чуть ли не полгода идёт, форум пестрит обьявлениями, странно что есть ещё те кто не знает.

А коды все что были раньше написаны компилируются и сейчас без проблем. Там новые функции появились, а старые никуда не делись пока.

 

Ок, эту проблему решил, возникла другая:

#import "libmysql.dll"

int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);

После обновления терминала, перестала корректно работать данная функция, возвращает код ошибки 2005 с описанием в виде "?????????????"

Запускаю старый терминал, работает без ошибки, в чем прикол?????

Разработчики могут ответить????


 
gfm73:

Ок, эту проблему решил, возникла другая:

#import "libmysql.dll"

int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);

После обновления терминала, перестала корректно работать данная функция, возвращает код ошибки 2005 с описанием в виде "?????????????"

Запускаю старый терминал, работает без ошибки, в чем прикол?????

Разработчики могут ответить????


пиши сюда : Выпущена бета-версия MetaTrader 4 Build 574 с обновленным языком MQL4 и Маркетом приложений
 
gfm73:

Подозреваю из-за того что строки стали широкие.

Везде где есть строки надо менять импорт на uchar[] или делать поддержку unicode в дллках.


 
TheXpert:

Подозреваю из-за того что строки стали широкие.

Везде где есть строки надо менять импорт на uchar[] или делать поддержку unicode в дллках.



а можно пример, буду признателен!!!
 

Было:

#import "kernel32.dll"
   int   DeleteFileA (string lpFileName);

Вариант 1

#import "kernel32.dll"
   int   DeleteFileA (uchar& lpFileName[]);

...

   uchar path[];
   ToAnsi(TerminalPath() + "\\ClusterDelta\\DeltaDataReceiver", path);
   bool succeeded = DeleteFileA(path);

...

void ToAnsi(string s, uchar& res[])
{
   ArrayResize(res, StringLen(s) + 1);
   StringToCharArray(s, res);
}

Вариант 2

#import "kernel32.dll"
   int   DeleteFileW (string lpFileName); // замена на поддерживающую юникод функцию
 
TheXpert:

Было:

Вариант 1

Вариант 2



Вы меня выручили, а то ночь точно была бы бессонной )), большое спасибо!
 
Еще вопрос, как быть с функциями такого рода: string mysql_fetch_row(int result);
 

Вроде как нашел ответы на вопросы: https://www.mql5.com/ru/articles/364

Остается только выяснить на сколько он применим к mql4.

 
gfm73:
Еще вопрос, как быть с функциями такого рода: string mysql_fetch_row(int result);
Не использовать или делать свои оболочки. Иначе могут быть проблемы с выделенной памятью при передаче туда сюда.
Причина обращения: