Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Хочешь изучить язык MQL5? 300 статей помогут тебе!
Vasyl Nosal
18218
Vasyl Nosal 2015.04.23 15:32 

Строки теперь представлены в формате Unicode, раньше они были в формате ANSI (однобайтовые). Это необходимо учитывать, если программа использует DLL и передает в них строковые переменные.

 

И???

Что мне теперь с переменной ip_address делать?

#import "con.dll"
   int ConnectToServer(string a0);
#import


extern string ip_address = "123.46.4";
...
ConnectToServer(ip_address);
Ilyas
1185
Ilyas 2015.04.23 15:36  

eevviill:

Что мне теперь с переменной ip_address делать?

#import "con.dll"
   int ConnectToServer(char &a0[]);
#import


extern string ip_address = "123.46.4";
...
char a[];
StringToCharArray(ip_address,a);
ConnectToServer(a);
Vasyl Nosal
18218
Vasyl Nosal 2015.04.23 16:41  
mql5:

Спасибо. Но не помогает. 

Vasyl Nosal
18218
Vasyl Nosal 2015.04.23 16:55  
Есть у кого то идеи ещё?
Алексей Тарабанов
7220
Алексей Тарабанов 2015.04.23 23:10  
eevviill:
Есть у кого то идеи ещё?
#import "con.dll"
   int ConnectToServer(uchar &a0[]);
#import


extern string ip_address = "123.46.4";
...
uchar a[];
StringToCharArray(ip_address,a);
ConnectToServer(a);
Но и это, скорее всего, не так. Точки напрягают, - видимо, нужно использовать short/ushort. Ну, и сопутствующий геморрой в библиотеке динамической загрузки.
Slawa
Модератор
6680
Slawa 2015.04.24 06:53  
eevviill:

Спасибо. Но не помогает. 

Что значит "не помогает"?

Вам подсказали прямой путь, как получить мультибайтную строку из юникодной и использовать её в старой dll

Какие симптомы? Вы ip-адрес правильный указываете? Вы реальный адрес указали в своём примере?

Ihor Herasko
8458
Ihor Herasko 2015.04.24 07:01  
eevviill:
Есть у кого то идеи ещё?

Изменить описание функции внутри DLL с:

int ConnectToServer(MqlStr *str);

 на:

int ConnectToServer(char *str);
Vasyl Nosal
18218
Vasyl Nosal 2015.04.24 08:30  
tara:
Но и это, скорее всего, не так. Точки напрягают, - видимо, нужно использовать short/ushort. Ну, и сопутствующий геморрой в библиотеке динамической загрузки.
Пробовал в коде советника. Тоже не помагает.
Vasyl Nosal
18218
Vasyl Nosal 2015.04.24 08:33  
Scriptong:

Изменить описание функции внутри DLL с:

 на:

 

Дык. Так разработчики должны были подумать что будет если они обновят билд? У меня нету исходного кода dll.
Vasyl Nosal
18218
Vasyl Nosal 2015.04.24 08:43  
stringo:

Что значит "не помогает"?

Вам подсказали прямой путь, как получить мультибайтную строку из юникодной и использовать её в старой dll

Какие симптомы? Вы ip-адрес правильный указываете? Вы реальный адрес указали в своём примере?

В старом билде всё работает отлично. В новом если без изменений то скрин1.

 

С исправлением тоже самое.

 127.0.0.1   Проблема точно не в точности IP. Если он не правильный то пишется Invalid IP.

Не выдаёт ошибки соеденения только если передавать так(но так адрес не правильный) 

ConnecToServer(CharToString(IP_Address));
Vasyl Nosal
18218
Vasyl Nosal 2015.04.24 08:54  

Самое смешное что я даже пробовал назад в строку перобразрвывать в ANSI, тоже не помагает.

CharArrayToString
/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий