오류, 버그, 질문 - 페이지 2760

 
Sergey Dzyublik :

이 코드는 조건을 입력할 수 없는 BUG를 보여주지만 중단점이 여전히 트리거되고 동시에 코드의 완전히 다른 위치에 있습니다.
더 많은 질문?

이 코드 최적화 프로그램은 모든 것을 버리고 함수는 비어 있었습니다.

중단점이 함수의 같은 끝으로 이동하여 작동했습니다.

 
MetaQuotes :

이 코드 최적화 프로그램은 모든 것을 버리고 함수는 비어 있었습니다.
중단점이 함수의 같은 끝으로 이동하여 작동했습니다.

나는 첫 번째 예에 흥분했습니다. 동의합니다.
글쎄, 두 번째는 어떻습니까? 결국, 중단점이 조건 내부에 남아 있고 아무데도 이동하지 않습니다.
중단점에 도달하면 사용자가 진입 조건이 충족되었다고 오도할 수 있지만 실제로는 그렇지 않을 수 있습니다.

 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 :

중단점이 함수의 같은 끝으로 이동하여 작동했습니다.

이것이 버그라고 생각하십니까?

 
MT5(빌드 2460) 템플릿 클래스에서 상속을 사용할 때 문제가 발생했습니다. 빌드 2450을 포함한 이전 버전에서는 모든 것이 작동했습니다.
 
네임스페이스에서 템플릿 클래스를 상속할 때 MT5 버그(빌드 2460) 컴파일 오류가 발생 합니다.
C++ 온라인: 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;
}
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MQL5의 OOP에 대한 질문

fxsaber , 2020.05.30 10:04

의외의 결과를 얻었습니다.
 #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 에서 프로그래밍 방식으로 각도를 찾을 수 없는 이유는 무엇입니까?

프로그래밍 방식으로 두 점의 시간과 가격을 설정할 수 있으며 각도는 0을 반환합니다.

OBJ_TRENDBYANGLE이 팔을 움직이면 각도의 일반 값이 반환됩니다.


추세선 자체와 같은 각도로 추세선에 텍스트를 배치하고 싶습니다.

그러나 추세선은 각도를 반환하지 않으며 OBJ_TRENDBYANGLE에는 고정 두 번째 좌표가 있으며 가격 상승 또는 하락의 결과로 차트 스케일이 변경되면 잘못된 정보를 얻습니다 ...

 

컴파일러에서 경고 를 표시하는 이유는 무엇입니까?

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

UPD: 아니요

int ArrayInitialize (uchar 배열[], uchar 값);

쓰기 불편하다

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

code 401 누가 어떤 종류의 오류를 알려줄까요?

무엇을 발견

401

이 클래스는 final 지정자로 선언되었기 때문에 상속이 불가능합니다.

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

컴파일러에서 경고 를 표시하는 이유는 무엇입니까?

UPD: 아니요

int ArrayInitialize( uchar 배열[], uchar 값);

쓰기 불편하다

0xFF는 아마도 컴파일러를 4바이트로 바꿉니다.

알렉산드르 산 :

code 401 누가 어떤 종류의 오류를 알려줄까요?

무엇을 발견

401

이 클래스는 final 지정자로 선언되었기 때문에 상속이 불가능합니다.

그리고 질문은 무엇입니까? 사실 최종 수정자는 없지만 오류가 있습니까? 아니면 무엇입니까?