Hatalar, hatalar, sorular - sayfa 2753

 
Alexey Navoykov :
Kafanızın neyle ilgili olduğunu anlıyorum. C#'da const belirteci yalnızca derleme zamanında değerlendirilen sabit ifadeler için kullanılır. C++'da bunun bir benzeri vardır: constexpr. Ama MQL'de öyle değil.

Evet

burada genel olarak soru, dillerin sözdizimsel yapılarındadır.

doğal dilde (matematikte) bir sabit ... deyim yerindeyse bir sabittir! ))

C++'da sabit, derleyici tarafından bir değişkenin kapsamındaki (veya ömründeki) bir makine sabitliği kontrolüdür.

C#'ta bir sabit, doğal bir dilin normlarına daha yakın sözdizimsel bir anlama sahiptir


Peki bu tartışmanın amacı ne:

 const MqlTick _Tick; // Текущий _Symbol-тик.

IMHO, bu yapı C++ sözdizimi ile tamamen tutarlıdır veya en azından MQL4'te Bid and Ask vardı ve uzun süredir kimse bunun ne kadar haklı olduğu konusunda şüphe duymadı.




demagoji olmadan, mevcut fiyatlara en hızlı erişime ihtiyacınız varsa, profil oluşturucu SymbolInfoDouble() ve SymbolInfoTick()'in sürekli kullanımının optimizasyon hızını azalttığını gösterir.

 
Mihail Matkovskij :

Derleyiciyi nasıl değiştirebilirim?

Derleyicinin, yapı 900'den MetaEditor'da yerleşik olduğunu öğrendim: https://www.mql5.com/ru/forum/21374

O zaman neden VS'nin kurulu olduğu dizine giden bir satıra sahip bu pencere?

derleyiciler

Обратите внимание, что компилятор переехал внутрь MetaEditor, начиная с 900 билда
Обратите внимание, что компилятор переехал внутрь MetaEditor, начиная с 900 билда
  • 2014.03.01
  • www.mql5.com
Консольный компилятор MQL4/MQL5 остался, обновляется вместе с платформами МетаТрейдер 4/5 и всегда доступен по ссылкам:.
 
Igor Makanu :

demagoji olmadan, mevcut fiyatlara en hızlı erişime ihtiyacınız varsa, profil oluşturucu SymbolInfoDouble() ve SymbolInfoTick()'in sürekli kullanımının optimizasyon hızını azalttığını gösterir.

Eh, burada daha önce mevcut karakterin adı yerine NULL'u geçme olasılığının eklenmesi önerildi. Bu, belirli durumlarda işi hızlandırabilir. Genel olarak, karakterlerin metin değerleri aracılığıyla değil, tutamaçlar aracılığıyla erişmeniz gerekir. Ancak geliştiricilerin böyle bir komplikasyona girme ihtimalinin düşük olduğunu düşünüyorum. Ve bence buna değmez. Sorun oldukça yapmacık.

Önceki ölçümlerde, maliyetler test cihazının boşta çalışmasının (yüksüz) yalnızca %6'sı kadardı. Ve çalışma kodunda, daha küçük bir büyüklük sırası olacaktır. Bu tür önemsemelere dikkat etmeye değer mi? Evet ve bu işlevleri işleyicide birden fazla kez çağırmak başlı başına yanlış bir karardır.

 
Alexey Navoykov :

Eh, burada daha önce mevcut sembolün adı yerine NULL geçme olasılığının eklenmesi önerildi. Bu, belirli durumlarda işi hızlandırabilir. Genel olarak, karakterlerin metin değerleri aracılığıyla değil, tutamaçlar aracılığıyla erişmeniz gerekir. Ancak geliştiricilerin böyle bir komplikasyona girme ihtimalinin düşük olduğunu düşünüyorum. Ve bence buna değmez. Sorun oldukça yapmacık.

Zaten çalışıyor, ancak hızlanma yok (kontrol ettim) - görünüşe göre, her şey mümkün olduğunca hızlandırılmış veya tam tersi - hala hızlandırmanın bir sonu yok (Geliştiricilerden gerekli olanı vurgulama isteği)

 
A100 :

Bu nedenle, katılık için _Digits yerine Digits() kullanmanız gerekir. O zaman resmi olarak ve hiçbir mantıksal çelişki ortaya çıkmaz - Digits() const değiştiricisine bağlı değildir.

Anladığım kadarıyla, MT4 ile uyumluluk için _Digits gerekliydi - başka bir şey değil

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

İlyas , 2020.05.20 15:39

Symbol() işlevinin çağrılması HER ZAMAN, Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason() gibi global _Symbol değişkenine erişmek için genişler.

 
Mihail Matkovskij :

Hata ayıklarken ve gösterge çalışırken, günlükte aniden Yığın taşması yazıyorum. Kendi kendine hata ayıklarken, "Kritik bir hata oluştu, hata ayıklama durduruldu" mesajı atılıyor. İşte benim benzer konu: https://www.mql5.com/ru/forum/338301 . Ancak derlerken, derleyici yemin etmez ve her şey yolunda gider. Hata ayıklarken, programın hangi noktada çökeceğini belirlemek mümkün değildir.

Belki de her şey derleyici ile ilgilidir? Hangi derleyicinin kullanıldığını gerçekten araştırmadım, ancak ayarlarda aşağıdaki resme sahibim:

VS yükledim, bu yüzden bu bağlantı ayarlarda. Yani derleyici uygun mu? ... Ama VS'im olmadığında derleyici neydi, dürüst olmak gerekirse, onu araştırmadım. Belki de o derleyiciye geri dönmeyi ve projeyi onunla derlemeyi denemelisin?

Sorunu çözmenin yollarını ararken, terminalin bir sonraki güncellemesinin gelmesiyle hata ayıklama düzgün çalıştı. Hataları bulmayı başardık. Bazı yöntemler döngüye girdi ve kendilerini çağırdı. Bu yüzden program "Yığın taşması" mesajıyla çöktü. Ancak çalışan bir hata ayıklamanın yardımıyla tüm sorunlu satırları bulup düzeltebildim. Hata ayıklama ile hatayı hızlı bir şekilde ortadan kaldırdıkları için Geliştiricilere şükranlarımı sunarım!

 

в естественном языке (в математике) константа это... ну как бы константа! ))

C++'da sabit, derleyici tarafından bir değişkenin kapsamındaki (veya ömründeki) bir makine sabitliği kontrolüdür.

C++'da ve MQL'de, bir sabit, oluşturma sırasında bir kez bir değere ayarlanabilir ve bir daha değiştirilemez. Görüş kapsamının bununla hiçbir ilgisi yoktur.

Matematikten çok farklı değil.


 
Mihail Matkovskij :

Derleyicinin, yapı 900'den MetaEditor'da yerleşik olduğunu öğrendim: https://www.mql5.com/ru/forum/21374

O zaman neden VS'nin kurulu olduğu dizine giden bir satıra sahip bu pencere?


Bir DLL yazıyorsanız, VS derleyicisi kullanılır.

 
fxsaber :

Bu, _ Digits , _P oint, _Period, _LastError vb.'yi doğrudan kullanmanın bir anlamı olmadığını bir kez daha doğrular. hayır (ve _Symbol bile NULL ile değiştirilebilir). Aslında const volatile olarak bildirilmeleri gerekir.

Ve tam tersine, bu seriyi tamamlamayı teklif ediyorsunuz.

 
A100 :

Bu, _ Digits, _P oint, _Period, _LastError vb.'yi doğrudan kullanmanın bir anlamı olmadığını bir kez daha doğrular. hayır. Ve _Symbol bile NULL ile değiştirilebilir

Ve tam tersine, bu satırı tamamlamayı teklif ediyorsun

Önemli olan referans ile geçebilmektir.