Features of the mql5 language, subtleties and tricks - page 162
![MQL5 - Language of trade strategies built-in the MetaTrader 5 client terminal](https://c.mql5.com/i/registerlandings/logo-2.png)
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
for structures and classes that include strings or dynamic arrays or class references, sizeof() will point the finger at the sky.
and I can understand it :-)
String type in mql is very complicated, and not fully disclosed in documentation.
But it can be guessed from C language, that char array (buffer) is wrapped in string type
And then you start dancing with understanding how it works ))
The string type in mql is very tricky, and is not fully disclosed in the documentation.
But the C language suggests that the string type is a char array (buffer)
And then you start dancing with understanding how it works ))
There are no strings in C.
for structures and classes that include strings or dynamic arrays or class references, sizeof() will point the finger at the sky.
and I can understand it :-)
But why?
With any dynamic array it will show the size of the dynamic array object, which is 52 bytes in MQL5
There are no thongs in C.
I think there already is, but that's not the point.
Yes, C has char[], it is wrapped in mql string
But why?
With any dynamic array it will show the size of the dynamic array object, which is 52 bytes in MQL5
the size of what and for whom will it show ?
52 bytes is their internal device only.
Why it's not 64 is unclear, they could have aligned :-)
I think there already is, but that's not the point.
Yes, C has char[], it is wrapped in mql string
Well, I understand that.
I do not use string functions at all. I immediately convert them to a char array using the StringToCharArray function and then work with the array. I have found it to be much more efficient.
Especially when it comes to parsing.
the size of what and for whom will it show ?
52 bytes is only their internal structure.
It's not clear why it's not 64, they could have aligned it :-)
Probably some kind of structure with different types. For example, 5 ulong and 3 uint. Maybe time is present for internal processing and time of last access. I DON'T KNOW. Who knows what this structure may contain.
Well, that's understandable.
I don't use string functions at all. I immediately convert them to a char array using the StringToCharArray function and then work with the array. I have found it to be much more efficient.
Most likely, the mql string is short[] or wchar_t[] or wchar_t*.
After all, mql strings are in Unicode, while utf is 2 bytes.
And StringToCharArray converts from short[] to char[].
And most likely under mql string there is short[]
After all, there are 2 bytes in string in Unicode in mql.
And StringToCharArray converts from short[] to char[]
no I would have noticed. Although I don't exclude that in some cases (when working with Unicode) it is possible. In Java, for example, char type is 2 bytes.
I tried to parse data from crypto-exchange in two variants: via this JSON library and via working with char array.
The difference turned out to be 700(!!!) times by speed. I was shocked. Perhaps it was far from the best JSON implementation.