Как преобразовать ANSI в Unicode?

 

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

 

И???

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

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


extern string ip_address = "123.46.4";
...
ConnectToServer(ip_address);
 

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);
 
mql5:

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

 
Есть у кого то идеи ещё?
 
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. Ну, и сопутствующий геморрой в библиотеке динамической загрузки.
 
eevviill:

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

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

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

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

 
eevviill:
Есть у кого то идеи ещё?

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

int ConnectToServer(MqlStr *str);

 на:

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

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

 на:

 

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

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

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

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

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

 

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

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

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

ConnecToServer(CharToString(IP_Address));
 

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

CharArrayToString
Причина обращения: