Особенности языка mql5, тонкости и приёмы работы - страница 162

 
Nikolai Semko:


для структур и классов включающих строки или динамические массивы или ссылки на классы, sizeof() покажет пальцем в небо.

и я его могу понять :-)

 
Nikolai Semko:


Тип стринг в mql очень замудрённый, и до конца не раскрыт в документации.
Но по языку Си можно догадаться, что в тип стринг обёрнут char массив (буфер)
А дальше начинаются танцы с пониманием того, как он работает ))

 
Roman:

Тип стринг в mql очень замудрённый, и до конца не раскрыт в документации.
Но по языку Си можно догадаться, что в тип стринг обёрнут char массив (буфер)
А дальше начинаются танцы с пониманием того, как он работает ))

В Си нет стрингов.

 
Maxim Kuznetsov:

для структур и классов включающих строки или динамические массивы или ссылки на классы, sizeof() покажет пальцем в небо.

и я его могу понять :-)

Но почему же?
При любом динамическом массиве он покажет размер объекта динамического массива, который равен 52 байта в MQL5


 
Nikolai Semko:

В Си нет стрингов.

По моему уже есть, но не об этом речь.
Да в Си есть char[], речь о том что он обёрнут в mql string

 
Nikolai Semko:

Но почему же?
При любом динамическом массиве он покажет размер объекта динамического массива, который равен 52 байта в MQL5

размер чего и для кого оно покажет ?

52 байта это исключительно их внутренне устройство.

Отчего не 64 непонятно, могли бы и выровнить :-)

 
Roman:

По моему уже есть, но не об этом речь.
Да в Си есть char[], речь о том что он обёрнут в mql string

Ну это понятно.
Я вообще функции стрингов не использую. Сразу же перевожу их в массив char с помощью функции StringToCharArray и дальше работаю с массивом. По опыту это гораздо эффективнее.

Особенно если речь о парсинге.

 
Maxim Kuznetsov:

размер чего и для кого оно покажет ?

52 байта это исключительно их внутренне устройство.

Отчего не 64 непонятно, могли бы и выровнить :-)

Наверное структура какая-то с разными типами. Например, 5 ulong и 3 uint. Может и время присутствует для внутренней обработки и времени последнего обращения. ХЗ. Мало ли что эта структура может в себе содержать. 

 
Nikolai Semko:

Ну это понятно.
Я вообще функции стрингов не использую. Сразу же перевожу их в массив char с помощью функции StringToCharArray и дальше работаю с массивом. По опыту это гораздо эффективнее.

А скорее всего под mql стрингом там short[] или wchar_t[] или wchar_t*
Ведь строки mql в юникоде, а utf это 2 байта.
А StringToCharArray преобразует из short[] в char[]

 
Roman:

А скорее всего под mql стрингом там short[]
Ведь в строки в mql в юникоде 2 байта.
А StringToCharArray преобразует из short[] в char[]

нет я бы заметил. Хотя не исключаю, что в некоторых случаях(при работе с юникод) такое возможно. В Java, например, тип char - 2 байта.
Пробовал парсить данные с криптобиржи в двух вариантах: через эту библиотеку JSON и через работу с массивом char. 
Разница получилась по скорости в 700(!!!) раз. Был в шоке. Возможно была далеко не лучшая реализация JSON.