Hatalar, hatalar, sorular - sayfa 1499

 
Alexey Kozitsyn :
Programlama cehennemine giden yol küresellerle döşenmiştir ." - Steve McConnell
Bu uyarının bulunmadığına ilişkin yalnızca bir örnek gösterilmiştir. Bir değişkenin global mi yoksa yerel mi oluşturulacağı programcının zevkine ve tecrübesine bağlıdır.
 
Ilyas :
Yerel ve global değişkenlerin (yapıcılar olmadan basit tür veya "karmaşık") gerçek kullanımının eksikliği hakkında bir uyarı eklenecek, ancak bu görevin önceliği düşük.
Anladım teşekkürler. Her ihtimale karşı, geliştiricilerin dikkatini buraya çekmeye çalışacağım .
 
Alexey Kozitsyn :
PC başına bir aktivasyon. Kaç terminal olursa olsun.
Herhangi bir yerde onay var mı?
 
Vladimir Pastushak :
Herhangi bir yerde onay var mı?

Alıcı, Ürünü satın alma veya kiralama sırasında Satıcı tarafından belirtilen sayıda Ürün'ü etkinleştirme hakkını elde eder. Örneğin, bir Ürüne satın alma sırasında 20 etkinleştirme izni veriliyorsa, Alıcı, daha sonra Satıcı bu sayıyı azaltsa bile, Ürünü 20 farklı donanım yapılandırmasına yükleyebilir.

https://www.mql5.com/ru/market/rules

Правила покупки торговых роботов, индикаторов, книг и журналов в MetaTrader Market
Правила покупки торговых роботов, индикаторов, книг и журналов в MetaTrader Market
  • www.mql5.com
Общие положения и правила пользования сервисом Market
 
Bu gönderide , çözünürlükle küçültülmüş görüntü, orijinalinden 6 kat daha büyük boyutta (bayt) zaten. Ne için?
 
Alexey Kozitsyn :
Slava, iyi günler, kütüphane hakkında yorum yapabilir misin (yukarıdaki soru)?

Bu şekilde düzeltiyoruz

 long CChart::Open( const string symbol_name, const ENUM_TIMEFRAMES timeframe)
  {
   m_chart_id= ChartOpen (symbol_name,timeframe);
   if (m_chart_id== 0 )
      m_chart_id=- 1 ;
   return (m_chart_id);
  }
 
Slawa :

Bu şekilde düzeltiyoruz

Evet, teşekkürler, bu en iyi seçenek. Kütüphane için. 4024 hatası ne olacak?
 
Slawa :

Bu şekilde düzeltiyoruz

Bunu yapmanın amacı ne? Standart kütüphane, kullanıcının istediği gibi değil, yapısının ideolojisine sıkı sıkıya bağlı olarak kullanılmalıdır. Kullanıcı Alexey Kozitsyn bunu yanlış kullanıyor ve çıktıda bir sürü hata alıyor. CCart nesnesini oluşturduktan hemen sonra, Attach yöntemini kullanarak grafiği sınıf nesnesine eklemeniz gerekir. Bu yöntem aşırı yüklenmiştir ve hem mevcut tabloyu hem de istenen grafiği bağlayabilir. Ve Open yöntemine yaptığınız değişiklik, mevcut grafikle çalışma yeteneğini ortadan kaldıracaktır.

Ve standart kütüphanenin geliştiricilerine bir talep - kütüphanenin yapısının bir tanımını yapın. Birçoğu bunu anlamıyor ve hata yapmaya başlıyor ve siz de onların liderliğini takip ederek yaptığınız her şeyi kırmaya başlıyorsunuz.

 
Alexey Kozitsyn :

MT4 standart kitaplığı hakkında soru .

Chart.mqh dosyası

Bir grafik açmak istiyorum. Open(const string symbol_name, const ENUM_TIMEFRAMES timeframe) yöntemini kullanıyorum.

1. Kullanılamayan bir sembol kullanırsanız, ChartOpen() işlevi #4024 - dahili hata hatasını döndürür. Hatanın dahili olabileceğini iddia etmiyorum, ancak çok daha doğru bir hata kodu var - # 4106 - bilinmeyen bir karakter. Belki hata dönüş kodunu değiştirin? Çünkü 4024, geliştiriciye hatayı nerede arayacağına dair hiçbir şey söylemez.

2. Başarısız olursa, ChartOpen() m_chart_id alanını 0'a ayarlar, yani. Mevcut grafikle çalışmaya başladığımız ortaya çıktı, ancak bu doğru değil, çünkü Çalışmak için ihtiyacımız olan programı açamadık. Bu nedenle, Detach() yöntemi çağrılmazsa, mevcut grafik işten sonra kapanacaktır. Ayrıca bunun doğru bir yaklaşım olduğunu düşünmüyorum. Bir hata durumunda ChartOpen() işlevinin -1 döndürmesi daha iyi olurdu.

Bir grafikle çalışmadan önce, Ekle !!! kullanılarak bir sınıf nesnesine eklenmelidir. Mevcut grafikle ( 0 ) çalışmak istemiyorsanız, bu kontrolü uygulayın ve çalışmanızda mevcut grafiğin kullanılmasını yasaklayın.

Ve bir grafikle çalışıp Ayır yöntemiyle kapatmadan çıkmak ne anlama geliyor? Sınıflarınızın yıkıcısına veya OnDeinit'e bir satır yazmak gerçekten zor mu? Nesnelerle çalışmak sıkı bir şekilde kontrol edilmelidir, o zaman hatalardan kaçınırsınız.

 
coderex :

Bunu yapmanın amacı ne? Standart kütüphane, kullanıcının istediği gibi değil, yapısının ideolojisine sıkı sıkıya bağlı olarak kullanılmalıdır. Kullanıcı Alexey Kozitsyn bunu yanlış kullanıyor ve çıktıda bir sürü hata alıyor. CCart nesnesini oluşturduktan hemen sonra, Attach yöntemini kullanarak grafiği sınıf nesnesine eklemeniz gerekir. Bu yöntem aşırı yüklenmiştir ve hem mevcut tabloyu hem de istenen grafiği bağlayabilir. Ve Open yöntemine yaptığınız değişiklik, mevcut grafikle çalışma yeteneğini ortadan kaldıracaktır.

Ve standart kütüphanenin geliştiricilerine bir talep - kütüphanenin yapısının bir tanımını yapın. Birçoğu bunu anlamıyor ve hata yapmaya başlıyor ve siz de onların liderliğini takip ederek yaptığınız her şeyi kırmaya başlıyorsunuz.

Bunu yapmanın amacının ne olduğunu yukarıda açıkça yazdım. Bir grafik açılırken bir hata meydana gelirse (örneğin, yanlış bir sembol belirtilirse), o zaman, herhangi bir nedenle, Attach(void) yöntemine benzer şekilde, Open() yöntemi geçerli grafiğin tanımlayıcısını nesne. Neden empoze etsin? Mevcut grafikle çalışmak istersem, dediğin gibi, Attach(void) { m_chart_id=ChartID(); } ve bu kadar. Ve burada, bir nedenden dolayı yanlış şeyle çalışmaya başladığım açıkça hatalı bir durumla karşılaşıyoruz. Genel olarak, bu ChartOpen() işlevinin kendi sorunudur, ancak değiştirmeyecekleri için en azından kitaplıkta değiştirmelerine izin verin.

Başka bir argüman. Mantıklı düşün. Yöntemin adı Open(). Yeni bir şeyin açılacağı anlamına gelir! Ve bu yenisiyle çalışmaya başlayacağız. Ve burada eskisi ile çalıştığımız ortaya çıktı. Ben mantığı göremiyorum. Ve bu yanlışlığı bir amaç için kullanıyor gibisin.

Bu yöntem aşırı yüklenmiştir ve hem mevcut tabloyu hem de istenen grafiği bağlayabilir. Ve Open yöntemine yaptığınız değişiklik, mevcut grafikle çalışma yeteneğini ortadan kaldıracaktır.

Ne öldürecek? Yine de Attach () yöntemine sahip olacaksınız, daha önce yaptığı gibi yapacak. Dediğiniz gibi, Open() işlevi tarafından döndürülen tanımlayıcıyı kontrol edin ve 0'dan küçükse, Attach(void) yöntemini çağırın. Herşey. Ancak, hemen Ekle (void) yöntemini çağırabilir ve mevcut tabloyu ekleyebilirseniz, böyle bir bahçenin neden çitle çevrilmesi gerektiği açık değildir.

Belki seni anlamıyorum. Sonra bir örnek verin.

Ve standart kütüphanenin geliştiricilerine bir talep - kütüphanenin yapısının bir tanımını yapın. Birçoğu bunu anlamıyor ve hata yapmaya başlıyor ve siz de onların liderliğini takip ederek yaptığınız her şeyi kırmaya başlıyorsunuz.

Ne büyük bir söz... Başkalarından daha zeki olduğunu düşünme, öyle olmadığın ortaya çıkabilir.