Hatalar, hatalar, sorular - sayfa 2564
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
?
garip bir durum, sınıf dışındaki her şey uzun süredir statik ile çalışıyor. ve ben burada çarmıha geriliyorum .... eğlence için, kodu kendiniz için yeniden oluşturun:
Bir nesne örneği görüyor musunuz? ... ve MQL'de ;)
Not: ve referans düzeyinde ... bana ne iddia ediyor?
https://www.mql5.com/ru/docs/basis/oop/staticmembers
Aynı kuralların tümü (özel, korumalı, genel) statik için geçerlidir, yalnızca bir .
Genel olarak, hayır: örneğin, türetilmiş bir sınıfta bir genel statik kısıtlanamaz
hmm... Durumun saçmalığını nasıl açıklasam... Neden yine benden alıntı yapıyorsun? Yöneticilerin (geliştiricilerin) mesajlarını okumanızı önerdim, yazdıkları sertifikayı gösterdim, fotoğraflarınızla benden ne istiyorsunuz?
Neden böyle olduğunu düşünmüyorum, forumu okuyorum ve geliştiricilerin önerdiği gibi yardım ediyorum ve yapıyorum. Gerekli olduğunu düşünüyorsanız, "C++ Standartlarının Korunması Komitesine", BM'ye yazın ... iyi, en azından PM'deki yöneticiye, zayıfsa, ancak sonra geliştiricilerin mesajlarını alıntılayın ve yol!
Not: Bir şekilde resim değil kaynak eklemeyi başardım, neden işinize yaramadı?
2019.09.17 22:11:49.534 tst (EURUSD,H1) 1:yazdır
2019.09.17 22:11:49.535 tst (EURUSD,H1) 2: yazdır
2019.09.17 22:11:49.535 tst (EURUSD,H1) 3: yazdır
2019.09.17 22:11:49.535 tst (EURUSD,H1) a1 = 2
2019.09.17 22:11:49.535 tst (EURUSD,H1) a1 = 3
2019.09.17 22:11:49.535 tst (EURUSD,H1) a1 = 4
Kodda , hata yalnızca özel yönteme erişimdedir. Bu hata yakın zamanda ortaya çıktı.
ChartOpen işlevi , hizmette her zaman 0 döndürür. Programın kendisi açılmasına rağmen.
Kodda , hata yalnızca özel yönteme erişimdedir. Bu hata yakın zamanda ortaya çıktı.
Bir şeyi unuttuğumu sandım, bu yüzden statiklerin C#'da nasıl davrandığını yeniden okudum https://metanit.com/sharp/tutorial/3.6.php
Bir sınıfın statik üyeleri, o sınıfın tüm nesneleri için ortaktır, dolayısıyla bunlara sınıf adıyla başvurulmalıdır:
Statik yöntemlerin yalnızca bir sınıfın statik üyelerine erişebileceğini unutmayın. Statik bir metot içinde statik olmayan metotlara, alanlara, özelliklere atıfta bulunamayız.
ve MQL'de, statikler OnInit() başlatılmadan önce başlatılır, şimdi statik için özel yöntemlerin küresel görünürlüğünü tartışıyoruz... IMHO sınıfındaki veri koruma özelliklerini kullanın
Ve bu nasıl bir bug? - evet, geliştiriciler döndükçe öyle olacak, ancak bağlam işlemini kullanırken davranışın programcı tarafından belirlendiğini (bağlam çözümleme operatörü dilde en yüksek önceliğe sahip operatördür!) ve ne kadar olduğunu yazıyorum derleyici doğru şekilde yardımcı olabilir, peki, nasıl gidiyor)))
bu şekilde mi çalışıyor?
genel olarak, görevler gerçekleştirilir
Not: 2145'e güncellendi - statik kod aynı şekilde davranır, peki, eğer yarım yıl boyunca böyle kalırsa, bunun statiğin planlanan davranışı olduğu ortaya çıkacaktır;)
UPD: Her şeyin nasıl argo olarak adlandırıldığını hatırladım - kirli numaralar! ))) - İnternette, bu davranışın bir dil standardı olarak algılandığı ve bir yerde üreticinin belirli derleyicilerine bağlı olduğu birçok örneğini arayın. Python'da eval() esasen doğrusal kod yürütmeyi tamamen bozar mı? - peki, biri kullanıyor, biri kullanmamak için yazıyor, çünkü öngörülemeyen davranış
UPD: 2145 için kontrol edildi sorunuz bir ay önce soruldu https://www.mql5.com/ru/forum/320733#comment_12989063
https://www.mql5.com/en/forum/320733#comment_12958594
hiçbir şey değişmedi, derleyici türleri kontrol ederken bool için nasıl uyarı yazılacağını öğrenmedi - bu çok tatsız , MQL derleyicisinin her zaman kesinlikle tür eşleşmesini izlediğinden emin olmama rağmen kodumda zaten bir hata aradım
Ve bu nasıl bir bug? - evet, geliştiriciler döndükçe, öyle olacak
Hatanın giderileceği aşikar.
hiçbir şey değişmedi, bool üzerinde türleri kontrol ederken, derleyici nasıl uyarı yazılacağını öğrenmedi
İşaretçilerin ve sayısal türlerin bool'a otomatik olarak aktarılması çok uygundur.
hiçbir şey değişmedi, derleyici türleri kontrol ederken bool için nasıl uyarı yazılacağını öğrenmedi - bu çok tatsız , MQL derleyicisinin her zaman kesinlikle tür eşleşmesini izlediğinden emin olmama rağmen kodumda zaten bir hata aradım
Bu döküm ile veri kaybı olmaz. 0 veya 0 değil.
Başka bir şey, double kullanıldığında -> herhangi bir tamsayı türü (int32'ye kadar ve dahil)
Bu döküm ile veri kaybı olmaz. 0 veya 0 değil.
Başka bir şey, double kullanıldığında -> herhangi bir tamsayı türü (int32'ye kadar ve dahil)
ama tam tersi?
Zaten kodda bir hata arıyordum
başta bir test yazdım ama önce int kullandım sonra bool yönünde bıraktım ama kodun tamamını düzeltmedim artık hatırlamıyorum ama şöyle bir şey :
Şimdi bu davranış için biraz hazırım, ama neden bunun hakkında yazıyorum ... peki, if() içindeki MQL koşullarını kontrol ederken - türleri kesinlikle kontrol ediyor mu? Boole olmayan işlemlerin herhangi bir kullanımı aynı uyarıyı veriyor mu? - peki, VS2017'de aynı C#'da yazdığım gibi - örnek kodum derlenmeyecek ve MQL uyarı vermiyor. Benim düşünceme göre, MQL programlamaya yeni başlayanlar için bu davranış bazı sürprizlerle doludur.
Hatanın giderileceği aşikar.
Tartışmayacağım, ancak benim görüşüm, sınıftan statik yoluyla ayrılırken ve bağlam çözümleme operatörünü kullanırken derleyicinin kontrolüne güvenmeye değmez.
onlar. statik bir yöntem/alan yazdıysanız veya uyguladıysanız :: - derleyiciye güvenmeyin