Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 162

 
Nikolai Semko :


dizeleri veya dinamik dizileri veya sınıf referanslarını içeren yapılar ve sınıflar için sizeof() parmağı gökyüzüne işaret edecektir.

ve anlayabiliyorum :-)

 
Nikolai Semko :


mql'deki dize türü çok yanıltıcıdır ve belgelerde tam olarak açıklanmamıştır.
Ancak C diline göre, bir karakter dizisinin (tampon) bir dize tipine sarıldığını tahmin edebilirsiniz.
Ve sonra danslar nasıl çalıştığını anlamakla başlar))

 
Roman :

mql'deki dize türü çok yanıltıcıdır ve belgelerde tam olarak açıklanmamıştır.
Ancak C diline göre, bir karakter dizisinin (tampon) bir dize tipine sarıldığını tahmin edebilirsiniz.
Ve sonra danslar nasıl çalıştığını anlamakla başlar))

C'de string yok.

 
Maxim Kuznetsov :

dizeleri veya dinamik dizileri veya sınıf referanslarını içeren yapılar ve sınıflar için sizeof() parmağı gökyüzüne işaret eder.

ve anlayabiliyorum :-)

Ama neden?
Herhangi bir dinamik dizi için, MQL5'te 52 bayt olan dinamik dizi nesnesinin boyutunu gösterecektir.


 
Nikolai Semko :

C'de string yok.

Zaten var, ama bahsettiğimiz şey bu değil.
Evet, C'de char[] var, mesele şu ki mql dizgisine sarılmış

 
Nikolai Semko :

Ama neden?
Herhangi bir dinamik dizi için, MQL5'te 52 bayt olan dinamik dizi nesnesinin boyutunu gösterecektir.

neyin büyüklüğünü ve kimin için gösterecek?

52 bayt, yalnızca onların dahili aygıtıdır.

Neden 64 net değil, hizalayabilirler :-)

 
Roman :

Zaten var, ama bahsettiğimiz şey bu değil.
Evet, C'de bir karakter[] var, mesele şu ki bir mql dizgisine sarılmış

Pekala, açık.
Dize işlevlerini hiç kullanmıyorum. StringToCharArray işlevini kullanarak bunları hemen bir char dizisine dönüştürüyorum ve ardından diziyle çalışıyorum. Deneyimden çok daha verimli.

Özellikle de ayrıştırma söz konusu olduğunda.

 
Maxim Kuznetsov :

neyin büyüklüğünü ve kimin için gösterecek?

52 bayt, yalnızca onların dahili aygıtıdır.

Neden 64 net değil, hizalayabilirler :-)

Muhtemelen herhangi birini farklı tiplerle yapılandırın. Örneğin, 5 ulong ve 3 uint. Belki dahili işleme ve son aramanın zamanı mevcuttur. HZ. Bu yapının neler içerebileceğini asla bilemezsiniz.

 
Nikolai Semko :

Pekala, açık.
Dize işlevlerini hiç kullanmıyorum. StringToCharArray işlevini kullanarak bunları hemen bir char dizisine dönüştürüyorum ve ardından diziyle çalışıyorum. Deneyimden çok daha verimli.

Ve büyük olasılıkla mql dizesinin altında kısa[] veya wchar_t[] veya wchar_t* vardır
Sonuçta, mql dizeleri unicode'da ve utf 2 bayttır.
Ve StringToCharArray, short[]'tan char[]'a dönüşür

 
Roman :

Ve büyük olasılıkla mql dizesinin altında kısa[] vardır
Sonuçta, unicode'da mql'deki satırlarda 2 bayt var.
Ve StringToCharArray, short[]'tan char[]'a dönüşür

hayır, fark ederdim. Bazı durumlarda (Unicode ile çalışırken) bunu dışlamama rağmen, bu mümkündür. Örneğin Java'da char türü 2 bayttır.
Bir kripto borsasındaki verileri iki şekilde ayrıştırmaya çalıştım: bu JSON kitaplığı aracılığıyla ve bir char dizisiyle çalışarak.
Aradaki fark hız olarak 700 (!!!) kat çıktı. şoktaydı. Belki de JSON'un en iyi uygulaması yoktu.