Hatalar, hatalar, sorular - sayfa 822

 
falkov :

Evet, elbette belirtilir ve ne olur. Bu yerim var ve çeşitli kontrollerle kapladım.

Yeri biliyorum, bunun neden olduğunu anlamıyorum!

Ayrıca bu satırdan önceki dizinin boyutunu ve sınırların dışında kalan diğer değişkenleri kontrol ediyorum.

Ama yine de, bir uzman haftada birkaç kez düşer.

Büyük olasılıkla, bu benim hatam ve umursamıyorum. Köpeğin nerede arandığını bulmak için herhangi bir mekanizmamın olmamasına karşıyım.

Aynı zamanda basit ve kullanışlı bir istisna mekanizması vardır. Bir zamanlar bu tür durumlar için tanıtıldılar.

Renat bana, bu mekanizmayı tanıttıkları anda, mantıksız programcıların hemen karıştırmaya ve onları çözmeye başlayacağını söyledi.

Bana göre saçma sapan bir argüman.

Eh, MetaQuots'un istisnalar konusundaki konumu biliniyor ve geri alınamaz (onlarla yaklaşık 2 yıl önce kendimle tartıştım), bu yüzden sahip olduklarınızla yetinmek zorundasınız. Kaynağınızın bir kısmının gösterilmesi daha yararlı olacaktır.
 

Bu arada, istisnalara alternatif olarak, istenirse, aşağıdaki gibi bir OnError olay işleyicisi uygulayabilirsiniz:

 bool OnError( uint errorcode, string filename, uint lineno, uint colno, string context)
{
  ...
   if (critical)
  {
     return ( true ); // для подтверждения остановки выполнения скрипта
  }
   else
  {
     return ( false ); // для продолжения выполнения на чарте (текущий вызов прерывается, но следующие тики/таймеры и пр. работают)
  }
}
 
Yerleşik kod kontrolünü, aynı iddiaları kullanın.
 
marketeer :

Bu arada, istisnalara alternatif olarak, istenirse, basitçe şöyle bir OnError olay işleyicisi uygulayabilirsiniz:


Tam olarak olmasa da bu beni tatmin etti diye düşünüyorum çünkü. OnError'da görülebilmeleri için gerekli değişkenleri global olarak bildirmek gerekli olacaktır.

Ama yine de onunla mutlu olurdum. Sadece bazen hatayı yakalamanız gerekir, sorunu bulup düzelttikten sonra, onları yerel olanlarda tekrar gizleyebilirsiniz.

OnError hakkındaki bu fikri Renat'a nasıl iletirsiniz?

 
falkov :

Tam olarak olmasa da bu beni tatmin etti diye düşünüyorum çünkü. OnError'da görülebilmeleri için gerekli değişkenleri global olarak bildirmek gerekli olacaktır.

Ama yine de onunla mutlu olurdum. Sadece bazen hatayı yakalamanız gerekir, sorunu bulup düzelttikten sonra, onları yerel olanlarda tekrar gizleyebilirsiniz.

OnError hakkındaki bu fikri Renat'a nasıl iletirsiniz?

Temelde hayır. Program kritik bir hatayla karşılaştıysa, kaderi yalnızca boşaltmaktır.

Her önemli işlevin dönüş kodları vardır, her şey ayrıntılı olarak açıklanmıştır. Bu nedenle, geliştirici programı üzerindeki kontrolünü kaybetmez.

ps: Elbette, yanlış indekslemenin yerinin açık bir göstergesinden sonra bile, "çok az veriyorsunuz!" Duymak şaşırtıcı.

 
TheXpert :
Yerleşik kod kontrolünü, aynı iddiaları kullanın.

Pekala, burada durum farklı. Bir kişinin sporadik bir hatası vardır (belirsiz koşullar altında nadiren çoğaltılır). Zaten düşen bir uzmanı var. Bir iddiada bulunursa, tam olarak aynı şekilde düşecek, ancak hemen değil ve neden olduğu da belli olmayacak. Bu yüzden ondan kodu göstermesini rica ediyorum.

Ve yığın olarak, bir komut dosyasının durmasına yol açan bu tür hatalara yalnızca konumun bir göstergesi değil, aynı zamanda tam bağlam da eşlik ediyorsa yararlı olabilir: çağrı yığını, değişkenlerin içeriği, vb. Bu çıktıyı bir önişlemci yönergesi ile isteğe bağlı hale getirebilirsiniz, yani. hata tanılama düzeyini belirtin: varsayılan olarak olduğu gibi bırakın, ancak iyileştirebilmek için.

Документация по MQL5: Основы языка / Препроцессор
Документация по MQL5: Основы языка / Препроцессор
  • www.mql5.com
Основы языка / Препроцессор - Документация по MQL5
 
marketeer :

Pekala, burada durum farklı. Bir kişinin sporadik bir hatası vardır (belirsiz koşullar altında nadiren çoğaltılır). Zaten düşen bir uzmanı var. Bir iddiada bulunursa, tam olarak aynı şekilde düşecek, ancak hemen değil ve neden olduğu da belli olmayacak. Bu yüzden ondan kodu göstermesini rica ediyorum.

Ve yığın için, komut dosyasının durmasına yol açan bu tür hatalara yalnızca konumun bir göstergesi değil, aynı zamanda tam bağlam da eşlik ediyorsa yararlı olabilir: çağrı yığını, değişkenlerin içeriği, vb. Bu çıktıyı bir önişlemci yönergesi ile isteğe bağlı hale getirebilirsiniz, yani. hata tanılama düzeyini belirtin: varsayılan olarak olduğu gibi bırakın, ancak iyileştirebilmek için.

Hata ayıklama sırasında tam bağlam izlenebilir.

Başka bir şey de, belirli alanlarda ara sıra yapılan hataların yakalanması gerektiğidir.

Ve burada , geçmiş üzerinde bir hata ayıklayıcı çalıştırma ihtiyacı ortaya çıkıyor.

Sorun eski, birçok kez gündeme getirildi, ancak şimdiye kadar işler hala orada.

 
marketeer :

Pekala, burada durum farklı. Bir kişinin ara sıra bir hatası vardır (belirsiz koşullar altında nadiren çoğaltılır). Zaten düşen bir uzmanı var. Bir iddiada bulunursa, tam olarak aynı şekilde düşecek, ancak hemen değil ve neden olduğu da belli olmayacak. Bu yüzden ondan kodu göstermesini rica ediyorum.

Sporadik hataların %95'i başlatma hataları veya bunların eksikliği ile ilgilidir. Yani bir kod parçası yardımcı olmayacak, ama her şeyi vermeyecek çünkü paranoya. ;-)

Sebep, tezahür yerinden çok uzakta aranmalıdır ve aftarın geliştiriciler için infaz talep etmesi daha kolaydır. Bu kesinlikle yardımcı olacaktır.

// Gerçek yardım edecek mi falkov ? :)

 
Urain :

Hata ayıklama sırasında tam bağlam izlenebilir.

Başka bir şey de, belirli alanlarda ara sıra yapılan hataların yakalanması gerektiğidir.

Ve burada , geçmiş üzerinde bir hata ayıklayıcı çalıştırma ihtiyacı ortaya çıkıyor.

Sorun eski, birçok kez gündeme getirildi, ancak şimdiye kadar işler hala orada.

O da gerçektir. Hatanın doğası ne olursa olsun, çok yardımcı olacaktır.
 
marketeer :

Pekala, burada durum farklı. Bir kişinin ara sıra bir hatası vardır (belirsiz koşullar altında nadiren çoğaltılır). Zaten düşen bir uzmanı var. Bir iddiada bulunursa, tam olarak aynı şekilde düşecek, ancak hemen değil ve neden olduğu da belli olmayacak. Bu yüzden ondan kodu göstermesini rica ediyorum.

Kodu göstermenin bir anlamı yok çünkü oldukça karmaşık bir mantık var kimin anlaması gerekiyor ve hatanın yeri basit ama hatayı bulmak için bir şey vermiyor yarım ekranda bir fonksiyon var saf kod. Her değişken aşağıdan ve yukarıdan limitler için kontrol edilir. Bir değişken bu sınırların dışındaysa, tüm değişkenleri ve değerlerini listeleyen bir mesaj görüntülenir. Elbette bir yerde bir yanlışlık var ama işte burada!! Bunun haftada bir veya iki kez olduğunu hatırlatmama izin verin. Danışman günün her saati saban sürer.

Ve sonra, bu benim için ilk kez olmasına rağmen, sadece bu özel durumla ilgilenmiyorum.

Ve yığın olarak, bir komut dosyasının durmasına yol açan bu tür hatalara yalnızca konumun bir göstergesi değil, aynı zamanda tam bağlam da eşlik ediyorsa yararlı olabilir: çağrı yığını, değişkenlerin içeriği, vb. Bu çıktıyı bir önişlemci yönergesi ile isteğe bağlı hale getirebilirsiniz, yani. hata tanılama düzeyini belirtin: varsayılan olarak olduğu gibi bırakın, ancak iyileştirebilmek için.

Ve bu harika olurdu! Tam bağlam elbette hatayı bulmama izin verir! EA çıkmadan önce, hata anında değişkenlere de bakmam gerekiyor.

Sevgili Renat! Belki bunu yapabilirsin?

Neden: