Hatalar, hatalar, sorular - sayfa 38

 

Bir sorun vardı, bunu neye bağlayacağımı bile bilmiyorum.

İşte ilgi kodunun bölümü:

       Print ( "itogo do=" ,itogo);
       if (itogo> 1000 )
        {
         Print ( "itogo>1000 =" ,itogo);
         itogo= 500 ;
         Print ( " vsego_ if=" ,itogo);
        }
       Print ( "itogo posle=" ,itogo);
       Print ( "+-----------------------------------------------------------+" );

İlk önce "itogo do" metniyle itogo değişkeninin değerini yazdırmanız gerektiğini söylüyor,

o zaman itogo 1000'den büyükse, itogo'yu "itogo>1000" metniyle yazdırın

toplam 500 atama

itogo'yu "vsego_if=" metniyle yazdırın ve ardından koşul tarafından korunan bölgeyi bırakın

itogo'yu "itogo after=" metniyle yazdırın

satırı yazdırın.

Neden bu kadar ayrıntılı yazıyorum?

sadece açık olmalıdır ki, eğer koşul yoksa, o zaman satırlar arasında iki baskı olacaktır; koşul olsaydı, o zaman dört baskı olacaktır.

Koşul tetiklendiğinde değişkenin değerinin değiştiğini anlıyorsunuz.

işte iki baskı olduğunun açıkça görüldüğü bir çıktı, yani koşulun tetiklenmediği, ancak değişkenin değerinin değiştiği

bu nasıl olabilir?????????


işte kodun ekran görüntüsü, böylece alanın dışında bir yerde satırlar arasında hiçbir şeyin gizlenmediği görülebilir, seçimli bir ekran vereceğim.

bu kodda herhangi bir çökme yok, sorunsuz derleniyor ama olması gerektiği gibi çalışmak istemiyor.

Değişken genel olarak int olarak bildirilir, kodun kendisi büyüktür, ancak kodun başka hiçbir yerinde baskı yoktur.

Tehdit Hata ayıklayıcıyla ilgili en ilginç şey çalışma normlarıdır, ancak normal modda başladığınızda işte bazı püf noktaları

ve bunlar baskı değil, programın mantığına göre heykeltıraş olmayan bir şey görüyorum.

 

Henüz başka örnekler üzerinde çoğaltmak mümkün olmadı, ancak bu, çözümü özetlemiş gibi görünüyor.

Metinde daha önce DebugBreak() vardı; ve kod hata ayıklayıcı aracılığıyla çalıştırıldı, daha sonra DebugBreak() kaldırıldı ve her şey yeniden derlendi

ama görünüşe göre ME, hata ayıklayıcının kullanıldığını hatırlıyor ve derlemeden sonra üzerinde çalışma olmadan doğru çalışmayı reddediyor.

Hata ayıklayıcıda çalıştırırsanız, normal bir başlangıçla bile komut dosyası iyi çalışır.

 
Urain :

Diğer örnekler üzerinde çoğaltmak henüz mümkün olmadı, ancak bu, çözümü özetlemiş gibi görünüyor.

Metinde daha önce DebugBreak() vardı; ve kod hata ayıklayıcı aracılığıyla çalıştırıldı, daha sonra DebugBreak() kaldırıldı ve her şey yeniden derlendi

ama görünüşe göre ME, hata ayıklayıcının kullanıldığını hatırlıyor ve derlemeden sonra üzerinde çalışma olmadan doğru çalışmayı reddediyor.

Hata ayıklayıcıda çalıştırırsanız, normal bir başlangıçla bile komut dosyası iyi çalışır.


Ve buna salıverme mi diyorlar?

2010 Şampiyonası Uzman Danışmanının potansiyel bir katılımcısı tarafından yazılmıştır, hata ayıklanmıştır, ancak "hata ayıklayıcı şeyler" kodda kalmıştır. Ve danışman iyi çalışıyor. Ancak yalnızca "şeyler" ile iyi çalışır, ancak katılımcı bundan şüphelenmez - böyle belgelenmemiş bir özelliği nasıl bilebilir?

Ve böylece katılımcı, 2010 Şampiyonasına katılmak için Uzman Danışmanının kaynak kodunu MetaQuotes'a gönderdi ve orada basitçe derlediler ve elbette kodun "hata ayıklayıcının malzemeleri" olmadan temiz olduğu ortaya çıktı.

2010 Şampiyonası devam ediyor ve bir nedenden dolayı MetaQuotes'taki Uzman Danışman, katılımcının bilgisayarındaki gibi ticaret yapmıyor. Ve katılımcı şaşkın ve her türlü düşünce kafasına tırmanıyor ...

 
Urain :

Bir sorun vardı, bunu neye bağlayacağımı bile bilmiyorum.

Örneğin, aşağıdaki kodu yaptım (değerlerinizi girin):

 void Check( int itogo)
  {
   Print ( "itogo do=" ,itogo);
   if (itogo> 1000 )
     {
       Print ( "itogo>1000 =" ,itogo);
      itogo= 500 ;
       Print ( "vsego_if=" ,itogo);
     }
   Print ( "itogo posle=" ,itogo);
   Print ( "+-----------------------------------------------------------+" );  
  }
void OnStart ()
  {
   Check( 158 );
   Check( 179 );
   Check( 202 );
   Check( 222 );
   Check( 243 );
   Check( 261 );
   Check( 288 );
   Check( 301 );
  }

İyi çalıştı:

 2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo posle= 301
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo do = 301
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo posle= 288
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo do = 288
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo posle= 261
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo do = 261
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo posle= 243
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo do = 243
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo posle= 222
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo do = 222
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo posle= 202
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo do = 202
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo posle= 179
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo do = 179
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo posle= 158
2010.07 . 08 07 : 00 : 22      size (EURUSD,D1)        itogo do = 158

Gördüğünüz gibi değişkenin değerlerinde herhangi bir hata veya tutarsızlık yok.

Sayısız revizyondan sonra kodu yeniden derlemeyi unutmuş ve eski sürümü kullanmış olabilirsiniz.

Ne yapılmalı:

  • kodunuzu sıfırdan kopyalayın, terminali yeniden başlatın (emin olmak için) ve kontrol edin
  • hata devam ederse, bize tam kodu servis masasından (hatta forumdan) gönderin - kesinlikle kontrol edeceğiz
 
simpleton :

Yeter artık histeri.

Bu hata onaylanırsa, derhal düzeltilecektir. Yazılım geliştirme hatasız gidemez.

 
Renat :

Yeter artık histeri.

Bu hata onaylanırsa, derhal düzeltilecektir. Yazılım geliştirme hatasız gidemez.

Renat , "MQL5'in Eleştirisi" konusunu veya buna benzer bir konuyu açmayı öneriyorum. Ve bu türdeki tüm mesajları diğer konulardan (dallardan) üstte olarak silin.

Böylece eleştirmenler söz sahibi olacak ve branşların konularına saygı duyulacaktır.

 

EA'dan gelen gösterge çağrısıyla ilgili olarak #18261 numaralı talebin akıbetini bilmek istiyorum (değer göstergeyle eşleşmiyor).

Bir şekilde cevap verseler fena olmazdı...

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
ddd06 :

EA'dan gelen gösterge çağrısıyla ilgili olarak #18261 numaralı talebin akıbetini bilmek istiyorum (değer göstergeyle eşleşmiyor).

Bir şekilde cevap verseler fena olmazdı...

Başvurunuz cevaplanmıştır. Tavsiyeler verdiler.

Profilinizde neden güncellenmedi - hadi çözelim.

 
Renat :

Örneğin, aşağıdaki kodu yaptım (değerlerinizi girin):

İyi çalıştı:

Gördüğünüz gibi değişkenin değerlerinde herhangi bir hata veya tutarsızlık yok.

Sayısız revizyondan sonra kodu yeniden derlemeyi unutmuş ve eski sürümü kullanmış olabilirsiniz.

Ne yapılmalı:

  • kodunuzu sıfırdan kopyalayın, terminali yeniden başlatın (emin olmak için) ve kontrol edin
  • hata devam ederse, bize tam kodu servis masasından (hatta forumdan) gönderin - kesinlikle kontrol edeceğiz

Ve buraya göndermeden önce ben de aynısını yaptım ve sonuç sizinkiyle aynıydı, ancak hatanın orijinal olarak oluştuğu sayfada her şey çöküyor.

Hata ayıklayıcıdaki nedeni tekrarlıyorum, eğer o belirli sayfada yeniden derlersem ve hata ayıklama boyunca çalıştırmadıysam, doğru çalışmıyor, hata ayıklamayı çalıştırdıktan sonra her şey yolunda. Hata ayıklayıcının bu belirli sayfaya yapışmasının nedenlerini bilmiyorum, kodun diğer sayfalardaki kopyaları iyi çalışıyor, ancak bu belirli bir çalışmıyor.

Bu nedenle, hatayı henüz yeniden oluşturamadığımı (ya da daha doğrusu çoğaltılabilir, ancak yalnızca yerelleştirilmiş bir proje çerçevesinde) yukarıda yazdım.

Görünüşe göre hata ayıklayıcının veya ME'nin düzenlemelerin geçmişini hatırlaması için bazı özellikler var, belki de olaydan önce dikkat etmediğim kritik bir hata vardı.

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5
 
Urain :

Ve buraya göndermeden önce ben de aynısını yaptım ve sonuç sizinkiyle aynıydı, ancak hatanın orijinal olarak oluştuğu sayfada her şey çöküyor.

Hata ayıklayıcıdaki nedeni tekrarlıyorum, eğer o belirli sayfada yeniden derlersem ve hata ayıklama boyunca çalıştırmadıysam, doğru çalışmıyor, hata ayıklamayı çalıştırdıktan sonra her şey yolunda. Hata ayıklayıcının bu belirli sayfaya yapışmasının nedenlerini bilmiyorum, kodun diğer sayfalardaki kopyaları iyi çalışıyor, ancak bu belirli bir çalışmıyor.

Bu nedenle, hatayı henüz yeniden oluşturamadığımı (ya da daha doğrusu çoğaltılabilir, ancak yalnızca yerelleştirilmiş bir proje çerçevesinde) yukarıda yazdım.

Görünüşe göre hata ayıklayıcının veya ME'nin düzenlemelerin geçmişini hatırlaması için bazı özellikler var, belki de olaydan önce dikkat etmediğim kritik bir hata vardı.

DebugBreak()'in tam olarak nerede ayarlandığını hatırlamıyor musunuz?

Şu ana kadar çoğaltmak mümkün olmadı.