Hatalar, hatalar, sorular - sayfa 1149

 
Contender :

Ve bu yüzden:

string var1[1][2] = {{"dfdffd","dfdfdfd"}};

?

teşekkür ederim .... soru kaldırıldı.
 

Merhaba sevgili topluluk.

Sitede bulamadım ve bu kodun neden bir hata yazdığını yarım gün boyunca kendim anlamıyorum. Sakıncası yoksa söyle.

 //+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   string nameObject= "testObject" ;
   ChartRedraw ( 0 );
   ResetLastError ();
   if ( ObjectFind ( 0 ,nameObject)>= 0 ){
      if (! ObjectDelete ( 0 ,nameObject)){
         if ( _LastError > 0 ){
            Print ( "1 Ошибка №" , _LastError );
            ResetLastError ();
         }
      }
   }
   ChartRedraw ( 0 );
   if ( _LastError > 0 ){
      Print ( "2 Ошибка №" , _LastError ); // Тут ошибка №4202 <Графический объект не найден>
      ResetLastError ();
   }
   if (! ObjectCreate ( 0 ,nameObject, OBJ_LABEL , 0 , 0 , 0 )){
      if ( _LastError > 0 ){
         Print ( "3 Ошибка №" , _LastError );
         ResetLastError ();
      }
   } else {
      ObjectSetInteger ( 0 ,nameObject, OBJPROP_CORNER , 1 );
   }
   if ( _LastError > 0 ){
      Print ( "4 Ошибка №" , _LastError );
      ResetLastError ();
   }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
svds75 :

Merhaba sevgili topluluk.

Sitede bulamadım ve bu kodun neden bir hata yazdığını yarım gün boyunca kendim anlamıyorum. Sakıncası yoksa söyle.

nesneyi neden silelim?
 
sergeev :
nesneyi neden silelim?
Aslında, program daha karmaşıktır. Sorunun ne olduğunu anlamak için rezil etmek için zaten basitleştirdim. Ama anlamadım.
 
svds75 :
Aslında, program daha karmaşıktır. Sorunun ne olduğunu anlamak için rezil etmek için zaten basitleştirdim. Ama anlamadım.
Neden sadece bir mesaj olduğunu ve her tik olmadığını anlamaya çalışın, o zaman soru olmayacak.
 
svds75 :
Aslında, program daha karmaşıktır. Sorunun ne olduğunu anlamak için rezil etmek için zaten basitleştirdim. Ama anlamadım.

Kodun stiline bakılırsa, basitleştirmek hala mümkündür. biraz yorum yap

belki if/else'de kafam karıştı?

 
svds75 :

Merhaba sevgili topluluk.

Sitede bulamadım ve bu kodun neden bir hata yazdığını yarım gün boyunca kendim anlamıyorum. Sakıncası yoksa söyle.

Bu tasarımla kod daha iyi okunur ve hata hemen görünür:

 //---
   string nameObject= "testObject" ;
   ChartRedraw ( 0 );
   ResetLastError ();
   if ( ObjectFind ( 0 ,nameObject)>= 0 )     // конечно объект не найден
     {
       if (! ObjectDelete ( 0 ,nameObject))
        {
         if ( _LastError > 0 )
           {
             Print ( "1 Ошибка №" , _LastError );
             ResetLastError ();
           }
        }
     }
   ChartRedraw ( 0 );
   if ( _LastError > 0 )
     {                                 // поэтому сразу переходим сюда:
       Print ( "2 Ошибка №" , _LastError );   // Тут ошибка №4202 <Графический объект не найден>
       ResetLastError ();
     }
 
mql5 :
Neden sadece bir mesaj olduğunu ve her onay işaretinin olmadığını anlamaya çalışın, o zaman soru olmayacak.
Üzgünüm, anlamadım. Belki cevabı biliyorsun ve bana bir ipucu verdin. Bunu da düşündüm, bu yüzden, ObjectFind() veya ObjectDelete() 'nin _LastError'a veya başka bir işleve bir hata yazdığını da söyleselerdi, belki de benim başıma gelebilirdi.
sergeev :

Kodun stiline bakılırsa, basitleştirmek hala mümkündür. biraz yorum yap

belki if/else'de kafam karıştı?

Uygulama yerinden bahsetmeden birçok seçenek denedim (bu kodda bile). Ve eğer / else aşağıdaysa, onu silebilirsiniz gibi görünüyor ve hata devam ediyor.

Çoğunlukla, atlanabilir. Onunla yeterince çalıştıktan sonra yazılacak daha fazla nesne doğrulama kodu. Benim için onu silmek ve gerekli parametrelerle yeniden oluşturmak daha kolay, çünkü yürütme işlemi sırasında parametreleri birçok kez değişiyor. Buna rastladım ve bu yüzden soruyorum.

 
barabashkakvn :

Bu tasarımla kod daha iyi okunabilir ve hata hemen görülebilir:

Ve hata nedir? Gerçekten, bir nesnenin olmadığını bilseniz bile, varlığı kontrol edilemez mi?

Ve tasarım hakkında, dedikleri gibi "tat ve renk ..."

 
svds75 :

Ve hata nedir? Gerçekten, bir nesnenin olmadığını bilseniz bile, varlığı kontrol edilemez mi?

Ve tasarım hakkında, dedikleri gibi "tat ve renk ..."

Nesne Bul

Geri dönüş değeri

Başarılı olursa, işlev, bulunan nesnenin bulunduğu alt pencerenin (0 grafiğin ana penceresi anlamına gelir) numarasını döndürür . Nesne bulunamazsa , işlev negatif bir sayı döndürür. Hata hakkında daha fazla bilgi almak için GetLastError() işleviniçağırmanız gerekir.

Nesne bulunamazsa, hata budur. Bu durumda, ObjectFind işlevinin kendisi negatif bir sayı döndürür ve hata numarası elde edilebilir.

Bu daha açık:

 //---
   string nameObject= "testObject" ;
   ChartRedraw ( 0 );
   ResetLastError ();
   int find= ObjectFind ( 0 ,nameObject);
   if (find>= 0 )     // конечно объект не найден
     {
       if (! ObjectDelete ( 0 ,nameObject))

Hata ayıklamada çalıştırın ve " find " değişkeninin değerini görün