Бета-тестирование MetaTrader 5 началось! - страница 98

 
Interesting писал(а) >>

К слову о DLL - А пример DLL из MT4 возвращает нормальную строку

PS

Насколько я понимаю MQL5 стал некорректно с PChar работать (в реслизации Delphi)...

PChar - это юникод или нет?

В MQL5 все строки безусловно юникодные, с двухбайтовыми символами.

В MQL4 строки с однобайтовыми символами, т.е. ANSI

 
Rosh >>:

Откуда Вы копировали пример - из MetaEditor или из справки? Я спрашиваю потому, что увидел лишний перенос строки в каждой строчке кода - это было в самых ранних версиях справки по MQL5.

Из справки. А терминал у меня всегда обновляется, вместе с ним и справка как я понимаю...

 

Есть такая функция:

string  ObjectName(

   long  chart_id,     // идентификатор графика

   int   pos,          // номер в списке объектов

   int   nwin=-1,      // номер окна

   int   type=-1       // тип объекта

   );

А как мне узнать номер в списке объектов когда известен только тип объекта?

 
arbuz писал(а) >>

Из справки. А терминал у меня всегда обновляется, вместе с ним и справка как я понимаю...

Нет. Автоматически обновляются только terminal.exe, MetaEditor.exe и MQL5.dll

 
stringo >>:

PChar - это юникод или нет?

В MQL5 все строки безусловно юникодные, с двухбайтовыми символами.

В MQL4 строки с однобайтовыми символами, т.е. ANSI


На сколько я помню String и PChar совместимые типы (по крайней мере в Delphi).


Привожу таблицу совмещения типов данных Delphi и C++ (взятую из справки Борланда)

Delphi Size/Values C++ Implementation
ShortInt 8-bit integer signed char typedef
SmallInt 16-bit integer short typedef
LongInt 32-bit integer int typedef
Byte 8-bit unsigned integer unsigned char typedef
Word 16-bit unsigned integer unsigned short typedef
Integer 32-bit integer int typedef
Cardinal 32-bit unsigned integer unsigned int typedef
Boolean true/false bool typedef
ByteBool true/false or 8-bit unsigned integer unsigned char typedef
WordBool true/false or 16-bit unsigned integer unsigned short typedef




LongBool true/false or 32-bit unsigned integer BOOL (WinAPI) typedef
AnsiChar 8-bit unsigned character char typedef
WideChar word-sized Unicode character wchar_t typedef
Char 8-bit unsigned character char typedef
AnsiString Delphi AnsiString AnsiString class
String[n] old style Delphi string, n = 1..255 bytes SmallString<n> template class
ShortString old style Delphi string, 255 bytes SmallString<255> typedef
String Delphi AnsiString AnsiString typedef




Single 32-bit floating point number float typedef
Double 64-bit floating point number double typedef
Extended 80-bit floating point number long double typedef
Real 32-bit floating point number double typedef
Pointer 32-bit generic pointer void * typedef
PChar 32-bit pointer to characters unsigned char * typedef
PAnsiChar 32-bit pointer to ANSI characters unsigned char * typedef
Comp 64-bit floating point number Comp class
OleVariant OLE variant value OleVariant class
 

Судя по таблице, PChar никакого отношения к юникодным строкам не имеет.

 
stringo >>:

Судя по таблице, PChar никакого отношения к юникодным строкам не имеет.

Вот и я уже всю голову сломал думая над тем что вместо него использовать....

 
PChar это ANSI.
 
Используйте строки (или массивы, в массивах не забывайте про zero terminator) из WideChar и соответствующие функции преобразования из AnsiString
 
stringo писал(а) >>

PChar - это юникод или нет?

В MQL5 все строки безусловно юникодные, с двухбайтовыми символами.

В MQL4 строки с однобайтовыми символами, т.е. ANSI

PChar - НЕ юникод. Нужно PWideChar - http://users.iafrica.com/d/da/dart/zen/Articles/DocFile/df_UNICODE.html

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