Hatalar, hatalar, sorular - sayfa 2760

 
Sergey Dzyublik :

Kod, koşulu girmenin imkansız olduğu bir HATA gösterir, ancak kesme noktası hala tetiklenir ve aynı zamanda kodda tamamen farklı bir yerde.
Daha çok soru?

Bu kod iyileştirici her şeyi attı ve işlev boş kaldı.

Kesme noktası, işlevin aynı ucuna taşındı ve çalıştı.

 
MetaQuotes :

Bu kod iyileştirici her şeyi attı ve işlev boş kaldı.
Kesme noktası, işlevin aynı ucuna taşındı ve çalıştı.

İlk örnek beni heyecanlandırdı, katılıyorum.
Peki ya ikincisi? Sonuçta, orada kesme noktası koşulun içinde kalır ve hiçbir yere hareket etmez.
Bir kesme noktasına basmak, kullanıcıyı giriş koşulunun karşılandığı konusunda yanıltır, ancak gerçekte bu olmayabilir:

 class A{
public :
   bool m_flag;
   A* m_next;
   A( bool flag) : m_flag(flag){}
   
   void test(){
       if (m_flag){
         printf ( "1" );
         m_next = m_next;     // Вручную установленная точка останова срабатывает как для false так и true условий
         //m_next = &this;   // Ok
      }   
   }
};

void OnStart (){
  {A a( false ); a.test();}   // Result: breakpoint               Expected result: 
  {A a( true );  a.test();}   // Result: printf + breakpoint     Expected result: printf + breakpoint
}
 
MetaQuotes :

Kesme noktası, işlevin aynı ucuna taşındı ve çalıştı.

Bunun bir bug olduğunu mu düşünüyorsun?

 
MT5 (derleme 2460) şablon sınıflarından kalıtım kullanırken bir şeyler bozuldu, her şey build 2450 dahil önceki sürümlerde çalıştı.
 
Ad alanından bir şablon sınıfından miras alınırken MT5 hatası (derleme 2460) derleme hatası .
C++ çevrimiçi: https://onlinegdb.com/S1E503pj8
 namespace NameSpace{  
   struct A{};
   
   template < typename T>
   struct B : public A{};            // 'A' - declaration without type
};

struct D : public NameSpace::B< int >{
   int data;
};

void OnStart (){
   D d;
}
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MQL5'te OOP hakkında sorular

fxsaber , 2020.05.30 10:04

Beklenmedik bir sonuç aldı.
 #include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

// Простая структура.
struct STRUCT1
{
   int i;  
   double j[ 2 ];
};

// Сложная структура.
struct STRUCT2
{
   int i;  
   string Str;
  
  STRUCT2() : Str( "1234567 1234567" )
  {
  }
};

template < typename T>
int Func( T &Array[] )
{  
   // Write
   for ( int i = ArraySize (Array) - 1 ; i >= 0 ; i--)
    Array[i].i = i;

   int Sum = 0 ;
  
   // Read
   for ( int i = ArraySize (Array) - 1 ; i >= 0 ; i--)
    Sum += Array[i].i;
    
   return (Sum + ArraySize (Array));    
}

void OnStart ()
{
  STRUCT1 Array1[]; // Простая структура.
  STRUCT2 Array2[]; // Сложная структура.
  
   const int Amount = 5 e7;
  
   Print (_B( ArrayResize (Array1, Amount), 1 ));
   Print (_B( ArrayResize (Array2, Amount), 1 ));
    
   Print (_B(Func(Array1), 1 )); // Чтение и запись простой структуры происходит в разы дольше,
   Print (_B(Func(Array2), 1 )); // чем сложной.
}


         50000000
         Alert : Time[Test6.mq5 280 : ArrayResize (Array2,Amount)] = 640 ms.
         50000000
         Alert : Time[Test6.mq5 282 : Func(Array1)] = 440 ms.
         1333106752
         Alert : Time[Test6.mq5 283 : Func(Array2)] = 156 ms.
         1333106752
 

OBJ_TRENDBYANGLE içindeki açıyı neden programlı olarak bulamıyoruz?

İki noktanın zamanını ve fiyatlarını programlı olarak ayarlayabiliriz ve açı 0 değerini döndürür.

Kollarımızı OBJ_TRENDBYANGLE hareket ettirirsek açının normal değeri döner.


Metni trend çizgisine, trend çizgisinin kendisiyle aynı açıda yerleştirmek istiyorum.

Ancak trend çizgisi açıyı döndürmez ve OBJ_TRENDBYANGLE sabit bir ikinci koordinata sahiptir ve fiyat artışı veya düşüşü sonucu grafik ölçeği değiştiğinde yanlış bilgi alırız...

 

Derleyici neden bir uyarı veriyor?

 uchar uc[ 16 ];
ArrayInitialize (uc, 0xFF ); // truncation of constant value

UPD: hayır

int ArrayInitialize ( uchar dizisi[], uchar değeri);

yazmak rahat değil

 uchar uc[ 16 ] = { 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF };
 

kod 401 size ne tür bir hata olduğunu kim söyleyecek?

ne bulundu

401

Nihai belirteç ile bildirildiği için bu sınıftan kalıtım mümkün değildir.

Документация по MQL5: Основы языка / Типы данных / Структуры, классы и интерфейсы
Документация по MQL5: Основы языка / Типы данных / Структуры, классы и интерфейсы
  • www.mql5.com
Структура является набором элементов произвольного типа (кроме типа void). Таким образом, структура объединяет логически связанные данные разных типов. Объявление структуры Имя структуры нельзя использовать в качестве идентификатора (имени переменной или функции). Следует иметь ввиду, что в MQL5 элементы структуры следуют непосредственно друг...
 
Igor Makanu :

Derleyici neden bir uyarı veriyor?

UPD: hayır

int ArrayInitialize( uchar dizisi[], uchar değeri);

yazmak rahat değil

0xFF muhtemelen derleyiciyi 4 bayta çevirir.

Alexandr San :

kod 401 ne tür bir hata olduğunu size kim söyleyecek?

ne bulundu

401

Nihai belirteç ile bildirildiği için bu sınıftan kalıtım mümkün değildir.

Ve soru nedir - aslında, son değiştirici yok, ama bir hata var mı, yoksa ne?