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

 
fxsaber :

이것은 언어의 잘못된 행동인 것 같습니다. 왜냐하면. 기회를 제한

const 필드를 구조체로 설정해야 합니다. 복사 연산자가 작동할 것이라고 생각했지만 구문이 비슷하기 때문에 컴파일러는 대신 생성자를 원합니다. 그러나 그것은 옳지 않습니다.

이것은 모호하지 않기 때문에 정확합니다(초기화 목록에는 항상 연산자가 아니라 생성자가 있음). 다른 것이 잘못되었습니다.

 struct S {
        S()                        { Print ( __FUNCSIG__ ); }
         void operator =( const S& ) { Print ( __FUNCSIG__ ); }
};
void OnStart ()
{
        S s;
        S s1 = s;

}

결과:

무효 S::S() (1)
무효 S::S() (2)
무효 S::연산자=(const S&) (3)

반면 C++는 (2) 및 (3) 행을 출력하지 않으므로 누락된 복사 생성자를 기본 생성자와 할당 연산자 의 공생으로 대체하지 않습니다.

 

BMP 개체에서 리소스를 삭제했다가 다시 만든 경우 BMP 개체는 더 이상 리소스를 볼 수 없습니다. 이것은 실수입니다. 이제 개체를 삭제하고 다시 만들어야 합니다.

 
fxsaber :

BMP 개체에서 리소스를 삭제했다가 다시 만든 경우 BMP 개체는 더 이상 리소스를 볼 수 없습니다. 이것은 실수입니다. 이제 개체를 삭제하고 다시 만들어야 합니다.

코드를 보여주시겠습니까? 리소스를 삭제하는 이유는 삭제하지 않고 다시 로드/변경할 수 있습니다.
 

상황:

타사 Expert Advisor의 시장 위치는 OrderSelect(ticketNumber,SELECT_BY_TICKET)에 의해 SUCCESSFULLY 선택되었으며 주기에서 닫기를 시도했습니다(닫기 시도 주기 전에 티켓에 의한 주문 선택이 이루어짐).


오류가 발생합니다.

 2017.11 . 10 06 : 00 : 33.806 ExpertName EURCAD,H1: unknown ticket 1846978258 for OrderClose function

티켓은 OK


당연히 기본 Expert Advisor는 이 주문을 자체적으로 마감할 수 있으므로

루프가 반복될 때마다 검사가 수행됩니다.

 if ( OrderCloseTime ()!= 0 ) break ;


원하는 결과를 제공하지 않으며 잘못된 티켓 번호에 대한 메시지가 주기의 30번 모두 발행됩니다.

비뚤어진 손 또는 선택한 주문이 손실 된 버그입니까?

또는 오류 번호가 상황/문제를 정확하게 반영하지 않을 수 있습니까?


업데이트:

나는 그 포지션이 네이티브 Expert Advisor가 아니라 우리가 그것을 닫는 사람에 의해 마감된다는 것을 알게 되었습니다.

그러나 주기적인 오류 4108이 발생하기 전에 오류 3이 한 번 발생합니다(로그의 오류 3 항목 이전에는 주문이 마감되었다고 기록되지만).

 
Kirill Belousov :

당연히 기본 Expert Advisor는 이 주문을 자체적으로 마감할 수 있으므로

루프의 각 반복에서 검사가 수행됩니다.

또한 OrderSelect 를 수행해야 합니다.

 
Andrey Barinov :
코드를 보여주시겠습니까? 리소스를 삭제하는 이유는 삭제하지 않고 다시 로드/변경할 수 있습니다.

물론 문제 없이 제거 없이 다시 로드됩니다. 문제를 제거한 후.

 #define WIDTH 100
#define ARGB(a,r,g,b)  (( uchar (a)<< 24 )|( uchar (r)<< 16 )|( uchar (g)<< 8 )| uchar (b))

bool Set( const string Name, const uint &Data[], const uint Width )
{
   return ( ResourceCreate (Name, Data, Width, (Width == 0 ) ? ArraySize (Data) : ArraySize (Data) / Width, 0 , 0 , Width, COLOR_FORMAT_ARGB_NORMALIZE ));
}

void Test( const string Name )  
{
   static uint Data[WIDTH * WIDTH];
  
   for ( uchar i = 0 ; i < 100 ; i++)
  {
     ArrayInitialize (Data, ARGB( 0xFF , i, i, 0 ));
     ArrayInitialize (Data, ARGB( 0xFF , i, i, 0 ));
    
    Set(Name, Data, WIDTH);
    
     ChartRedraw ();
    
     Sleep ( 50 );
  }
  
   ResourceFree (Name);   
}

void OnStart ()
{  
   const string ObjName = __FILE__ ;
   const string Name = "::" + ObjName;
  
   ObjectCreate ( 0 , ObjName, OBJ_BITMAP_LABEL , 0 , 0 , 0 );
   ObjectSetString ( 0 , ObjName, OBJPROP_BMPFILE , Name);
  
   // Видна работа
  Test(Name);
  
   // Нет результата на экране
  Test(Name);
  
   ObjectDelete ( 0 , ObjName);
}
 

일반적으로 다음에서 메시지 수신을 중지했습니다.

시스템 메시지


일반적으로 아무도 오지 않습니다. , 제품 게시물, 제품 판매, 중재자 메모, 제품 확인 게시물을 포함합니다.

 
Vladislav Andruschenko :

일반적으로 다음에서 메시지 수신을 중지했습니다.

시스템 메시지


일반적으로 아무도 오지 않습니다. , 제품 게시물, 제품 판매, 중재자 메모, 제품 확인 게시물을 포함합니다.

안녕하세요.

버그가 수정되었습니다. 사이트가 업데이트될 때까지 기다려야 합니다.

불편을 드려 죄송합니다.

 
Julia Test :

안녕하세요.

버그가 수정되었습니다. 사이트가 업데이트될 때까지 기다려야 합니다.

불편을 드려 죄송합니다.


고맙습니다. 이미 SD로 답변했습니다. :-) 대기 중...

Z.Y. 이렇게 고요한 적이 없었습니다 .... 그냥 고요함 .......

 
fxsaber :

또한 OrderSelect를 수행해야 합니다.

왜 그런지 자세히 알려주실 수 있나요?

티켓으로 주문을 성공적으로 선택했습니다.

반복 #1에서 종료하도록 팀을 보냈습니다.

이 반복 번호 1에서 오류 3이 발생했습니다(잘못된 거래 매개변수). 그러나 주문이 마감되었습니다. 어떻게 닫았습니까?

또한 2번 반복부터 오류 4108이 발생합니다. 그리고 OrderCloseTime!=0 조건으로 종료하는 것은 불가능합니다.


문서에 따르면 어떤 단계 에서 티켓에서 선택한 주문 과의 연결이 끊어집니까?

닫기 명령을 보낸 후 주문이 차단되어야 하고 4108 대신 오류 139가 발생했어야 하는 경우가 아닌가요?