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

 
Vigor :

호출 스택 오버플로 문제에 직면했습니다.

개체 중 하나에서 메서드를 호출한 후 아래 예제를 참조하세요. 코드는 단순하며 본질만 있습니다. CClass1 클래스는 기본이고 list1 목록에는 이 클래스의 다른 객체 자손이 있으며 해당 초기화 함수는 다른 구현을 가지고 있습니다. 따라서 init 함수가 한 줄의 init에서 돌아온 후 유사한 목록(즉, 중첩된 인터페이스의 초기화, 패널의 패널)을 반복하는 한 클래스에서

오류가 발생

2010.12.02 00:21:00 test1 (EURUSD,H1) 'Container.mqh'에서 잘못된 포인터 접근 (74,10)

저것들. 포인터 t가 죽었습니다.

디버깅할 때 이러한 오류가 없으며 포인터가 "live"인 메서드를 호출한 후 중첩된 인터페이스가 생성되고 Expert Advisor가 계속 작동합니다.

오류를 해결하는 유일한 방법은 다음과 같습니다.

#property stacksize를 지정해도 아무 것도 달성하지 못했습니다.

확실히 말씀드리기는 어렵습니다. 소스가 필요합니다.

서비스 데스크에 요청 을 작성해 보십시오.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 

휴가에서 돌아와서 터미널을 실행하고 빌드 360으로 업그레이드했는데 하나의 표시기가 작동을 멈췄습니다...

변경 사항 읽기: 6. MQL5: 차트의 클릭 이벤트 처리를 수정했습니다.

이제 그래픽 개체를 클릭하면 두 개의 이벤트가 즉시 생성됩니다. CHARTEVENT_OBJECT_CLICK + CHARTEVENT_CLICK 및 이전에는 CHARTEVENT_OBJECT_CLICK가 하나만 있었기 때문에 더블 마우스 클릭을 시뮬레이션할 수 있었습니다.

지금은 항상 이렇습니까 아니면 버그입니까?

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
AlexSTAL :

휴가에서 돌아와서 터미널을 실행하고 빌드 360으로 업그레이드했는데 하나의 표시기가 작동을 멈췄습니다...

변경 사항 읽기: 6. MQL5: 차트의 클릭 이벤트 처리를 수정했습니다.

이제 그래픽 개체를 클릭하면 두 개의 이벤트가 즉시 생성됩니다. CHARTEVENT_OBJECT_CLICK + CHARTEVENT_CLICK 및 이전에는 CHARTEVENT_OBJECT_CLICK가 하나만 있었기 때문에 더블 마우스 클릭을 시뮬레이션할 수 있었습니다.

지금은 항상 이렇습니까 아니면 버그입니까?

이것은 의도적으로 수행되었습니다.
 

또다시 불가능의 벽에 부딪혀

클래스가 특정 매개변수로 초기화되도록 매개변수를 생성자에 전달해야 합니다.

문제를 해결하는 방법? 당신은 무엇을 조언합니까?

 
Urain :

또다시 불가능의 벽에 부딪혀

클래스가 특정 매개변수로 초기화되도록 매개변수를 생성자에 전달해야 합니다.

문제를 해결하는 방법? 당신은 무엇을 조언합니까?


에게

예, 다른 방법이 보이지 않습니다.

 class test{
   private :
     bool inited;
     int value ;  
   public :
     void test(){
      inited = false ;
    }
    
   bool Set( int passed ){
     value = passed;
     return ( true );
  }
   bool Init( int passed ){
     if ( Set( passed ) ){
      inited = true;
       return ( true );
    }
     return ( false );
  }
   int Get( ){
     if ( !inited ){
      Print( "Объект неинициализирован" );
       return (- 1 );
    }
     return ( value );
  }
};

void OnStart()
  {
  
  
  test var ;
  if( ! var .Init( 1 )){
    Print("Ошибка инициализации объекта");
    return;
}
  Print( var .Get());
  
  test var2;
  Print( var2.Get() );
  }

물론 상속된 클래스의 경우 올바른 순서로 Init를 정렬해야 합니다.

그러나 일반적으로 복잡한 프로젝트의 오류 처리에 대한 기사를 작성하고 싶습니다. 여기에서 인쇄 및 반환은 옵션이 아닙니다.

 
gdtt :

예, 다른 방법이 보이지 않습니다.

물론 상속된 클래스의 경우 올바른 순서로 Init를 정렬해야 합니다.

그러나 일반적으로 복잡한 프로젝트의 오류 처리에 대한 기사를 작성하고 싶습니다. 여기에서 인쇄 및 반환은 옵션이 아닙니다.

즉, 생성 프로세스를 완료하고 초기화 플래그를 설정하는 doconstructor를 만듭니다.

일반적으로 상쇄되지만 불편한 점이 있습니다. 각 함수에서 초기화 플래그를 폴링해야 하며, 많은 수의 클래스 함수에서 이것은 편리하지 않습니다.

갑자기 무언가를 변경해야 하고 모든 기능을 다시 작성해야 합니다.

ZY 여기에서 코드를 편집하여 오타를 녹였습니다.

 class test
  {
private :
   bool               inited;
   int                value ;
public :
                     test( void ){inited= false ;};
   bool Set( int passed){ value =passed; return ( true );};
   bool Init( int passed)
     {
       if (Set(passed))inited= true ;    
       return (inited);
     };
   int Get()
     {
       if (!inited)
        {
         Print( "Объект неинициализирован" );
         return (- 1 );
        }        
       return ( value );
     };
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {

   test var ;
   var .Init( 1 );
   Print( var .Get());

   test var2;
   Print(var2.Get());
  }
 
Urain :

즉, 생성 프로세스를 완료하고 초기화 플래그를 설정하는 doconstructor를 만듭니다.

일반적으로 상쇄되지만 불편한 점이 있습니다. 각 함수에서 초기화 플래그를 폴링해야 하며, 많은 수의 클래스 함수에서 이것은 편리하지 않습니다.

갑자기 무언가를 변경해야 하고 모든 기능을 다시 작성해야 합니다.

ZY 여기에서 코드를 편집하여 오타를 녹였습니다.

Duck 생성자가 있었다고 해서 초기화가 성공한 것은 아닙니다. 초기화 사실을 확인해야 하는 경우

물론 한 번 확인할 수 있습니다.

 void OnStart()
  {

   test var ;
   if ( ! var .Init( 1 )){
     // здесь какято обрабтка
     return ;
   };
   Print( var .Get());

   test var2;
   Print(var2.Get());
  }

하지만 자신의 코드를 사용한다면 호출 중에 초기화 사실을 확인하는 것을 규칙으로 할 수 있고, 다른 사람이 사용하는 경우 지침에 쓸 수 없습니다. 그렇지 않으면 결과에 대해 보증할 수 없습니다." 아니요, 누구든지 클래스 메소드 에서 초기화 검사를 수행해야 합니다.

 

개발자.

새 빌드를 다시 시작한 직후


추신

다른 폴더에 설치된 단말기의 업데이트는 성공했고, 목록에 기호가 있습니다(업데이트 전에 열린 차트 는 없었지만)...

 

이것이 버그인지 아닌지 알려주세요. 다음을 썼다

 ENUM_ORDER_TYPE Signal[ 21 ];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   ArrayInitialize (Signal, WRONG_VALUE );
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   
  }
//+------------------------------------------------------------------+

오류 메시지 제공

'ArrayInitialize' - no one of the overloads can be applied to the function call 
 
sergey1294 :

이것이 버그인지 아닌지 알려주세요. 다음을 썼다

오류 메시지를 제공합니다


아마도 여기서 우리는 ArrayInitialize()가 특정 유형의 배열만 채우도록 설계되어 정확한 숫자(대부분 int 또는 double )가 되도록 설계되었다는 사실에 대해 이야기하고 있습니다.

배열이 ENUM_ORDER_TYPE 유형 이므로 ArrayInitialize를 호출하면 이러한 호출 방법이 허용되지 않는다는 오류가 발생합니다.

제 생각에는 이 경우 두 가지 옵션이 있습니다.

1. 코드에서 이를 고려하여 ENUM_ORDER_TYPE 배열 유형을 int 로 변경합니다(최소한 주문 유형은 int로 쉽게 표시될 수 있음).

2. 어레이의 "초기화"를 독립적으로 구현합니다.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
사유: