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

 
중재자에게 연락하는 방법을 아는 사람은 누구입니까? 아니면 누군가가 말할 수 있습니까? 태어나지 않았지만 통계에 보충이 있습니다. 그것은 무엇이며 어떻게 수정합니까?
 

이 동작이 올바른가요?

//+------------------------------------------------------------------+

//|                                                                  |

//+------------------------------------------------------------------+

class name

  {

public:

   int func()

     {

      static int t=0;

      t++;

      return t;

     }

  };

name A,B;

//+------------------------------------------------------------------+

void OnInit()

  {

   Print("A "+A.func());

   Print("B "+B.func());

  }

//+------------------------------------------------------------------+

/*

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) A 1

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) B 2

예상되는

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) 1

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) B1

다른 클래스 인스턴스가 선언되기 때문에

 
Vladimir Pastushak :

이 동작이 올바른가요?

틀림없이
 
TheXpert :
틀림없이

즉, 정적 변수는 개체 외부에서 볼 수 있습니까?

 
Vladimir Pastushak :

즉, 정적 변수는 개체 외부에서 볼 수 있습니까?

그리고 그것이 당신의 방식이라면 정적의 요점은 무엇입니까?

 class name{
   int t= 0 ;
public :
   int func() {
     return t++;
   }
};
 
CPU 최적화 테스트에 대한 스레드에 모든 사람이 참여하도록 요청합니다.
 

여보세요,

MT5 2085에서 여러 브로커에 복제된 버그를 발견했습니다.


1) 사각형의 종료 날짜가 미래(예: 2020)인 경우 최대 확대/축소 시 화면에서 사라지고 확대/축소가 축소되면 다시 나타납니다.

2) 차트의 막대에 미래 날짜가 있는 경우(예: 막대가 2019년 10월부터 시작되는 사용자 지정 눈금 차트) 선과 직사각형을 선택하고 차트, 아무 일도 일어나지 않습니다. 그러면 물체가 비스듬하게 그려진 것으로 밝혀졌습니다.


무엇이 잘못되었는지 파악하고 오류를 수정하십시오. 필요한 경우 동영상을 만들 수 있습니다. 고맙습니다!

 
알아낼 수 있도록 도와주세요. Tester의 다음 코드는 해당 메뉴를 호출하여 세트 파일을 로드하는 창을 엽니다.
 #include <WinAPI\winuser.mqh>

#define GA_ROOT           0x00000002

#define WM_COMMAND                     0x0111
#define WM_CONTEXTMENU     0x007B

#define DTM_SETSYSTEMTIME 0x1002

#define MN_GETHMENU     0x01E1   

#define PRINT(x) ; Print ( #x, ":" , string (x))
#define PRINT64(x) ; printf ( "%s%s%#.08x" , #x, ":" , x)

long GetHandle( long handle, int &controls[]){
   long next_handle = handle;                                                                        
   for ( int i = 0 ; i < ArraySize (controls); i++){
      next_handle = user32::GetDlgItem(next_handle, controls[i]);
      PRINT64(next_handle);
   }           
   return next_handle;                
} 

void OnStart (){
   long RootHandle = user32::GetAncestor(:: ChartGetInteger ( 0 , CHART_WINDOW_HANDLE ), GA_ROOT);
  PRINT64(RootHandle);  
  
   int controls[] = { 0xE81E , 0x804E , 0x28EF , 0x28FE }; 
   long handle = GetHandle(RootHandle, controls);
  PRINT64(handle);
  
  
//  PRINT(user32::SendMessageW(handle, WM_CONTEXTMENU, 0, -1));
  PRINT(user32::PostMessageW(handle, WM_CONTEXTMENU, 0 , - 1 ));
  PRINT( "Sleep" );
   Sleep ( 1000 );

   const long hpopup=user32::FindWindowW( "#32768" , NULL );
  PRINT64(hpopup);

   const long hmenu = user32::SendMessageW(hpopup, MN_GETHMENU, 0 , 0 );
  PRINT64(hmenu);
  
   uint id=user32::GetMenuItemID(hmenu, 0 );
  PRINT64(id);
  
  PRINT(user32::SendMessageW(RootHandle,WM_COMMAND,id, 0 )); // Выбор пункта меню "Загрузить"
/*
  Sleep(100);
  
  const long hwnd = GetLastActivePopup(RootHandle);
  PRINT64(hwnd);
*/   
}

이 코드는 테스터에서 옵션 탭을 선택하면 제대로 작동합니다. 그런 다음 코드에서 주석 처리된 SendMessage는 1을 반환합니다.

그러나 탭을 변경하면 메뉴가 호출되지만 "다운로드"항목이 선택되지 않습니다. SendMessage는 0을 반환합니다. 동시에 문제없이 열리는 메뉴에서 수동으로 항목을 선택할 수 있습니다.

SendMessage가 0을 반환한다는 캐치가 어디에 있습니까?

 

안녕하세요!

임대 VPS, 신호 복사가 중지되었습니다 . VPS를 끄면 모든 것이 작동합니다. 로그에 오류가 표시됩니다. 무엇으로 연결할 수 있습니까?

2019.08.12 23:03:18.632 MQL5.community: 권한 부여 실패

2019.08.12 23:03:18.632 신호: '77060013': 신호 목록 가져오기 실패, 연결 오류

파일:
 

식별자의 유효한 문자에 대한 질문입니다. 예시

 #define MACRO( x )              x ## AAA
void OnStart ()
{
         int xyz;
         int MACRO( BBB ); //нормально
}

결과적으로:

공백이 있는 변수 식별자 를 받았습니다.

예를 다음과 같이 다시 작성하면:

 #define MACRO( x )              x ##:AAA
void OnStart ()
{
        { int MACRO( BBB ); } //(1) //нормально
        { int BBB:AAA;      } //(2) //Error: 'AAA' - semicolon expected
}
그러면 우리는 모순을 공식화할 수 있습니다. (1)과 (2)의 차이점은 무엇입니까?