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

 
astronom55 :
안녕하세요. 모바일 버전 의 MT5는 Alpari 브로커에 연결되지 않습니다. 무슨 일이야? 언제 수정되나요?

여기 .

 
Sergey Dzyublik :

그리고 동일한 내용이 StringToShortArray 에 작성되었습니다.

그러나 이것이 문자열에서 NULL 문자를 적절하게 처리하는 것을 방해하지는 않습니다.

ShortArrayToString( array, start, count )이 올바르게 작동하지 않습니다. 터미널 0은 0이 아니라 끝에 있는 것입니다. 이 경우 ArraySize( array )를 기준으로 종료 여부를 결정할 수 있습니다. 최소한 count가 명시적으로 주어지면 결과 문자열은 최소한 min( count, ArraySize( array )) 이상이어야 합니다.

그리고 StringToShortArray ( text, array, start, count ) 는 올바르게 작동합니다. 터미널 0은 끝에 있는 것입니다. 그리고 끝은 StringLen( text )에 따라 결정됩니다.

 
Artyom Trishkin :

여기 .

  • 문제를 고려할 특정 자료를 제공하지 않았습니다. - 이 문제는 모든 Android 사용자에게 영향을 미칩니다 .
  • 귀하의 질문은 너무 광범위하여 설명 없이는 명확하게 대답하는 것이 불가능합니다 . 이해하지 못하는 것을 물어보십시오.
  • 당신은 문서 를 읽지 않는 게으른 사람일 뿐입니다. 대부분의 문제는 단순히 MQL 언어의 기본 개념에 대한 무지에서 비롯 됩니다. 이것은 문서에 없는 것 같습니다.
  • Google 액세스가 금지되었거나 단순히 검색 사용 방법을 모릅니다 . 검색 결과가 반환되지 않았습니다.

하나


이것은 MT5의 모바일 버전에 대한 리뷰의 일부일 뿐입니다.

2

알파리 포럼입니다.

그리고 당신은 그것에 대해 아무것도 몰라?

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
MetaQuotes Language 4 (MQL4) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и...
 

스크립트를 실행할 때


 #include <Files\FileTxt.mqh>
void OnStart (){

  CFileTxt file;
   int handle = file.Open( "test.bat" , FILE_WRITE | FILE_ANSI | FILE_REWRITE ); //
   if ( handle == INVALID_HANDLE ){
     int error = GetLastError ();
     Print ( "Ошибка создания файла, код ошибки " ,  error );
     return ;
  }
}


실수





이유는 무엇입니까?


파일 이름을 변경하면


 int handle = file.Open( "test" , FILE_WRITE | FILE_ANSI | FILE_REWRITE ); //

오류 없음

 
Aleksey Sergan :

스크립트를 실행할 때

실수

이유는 무엇입니까?

파일 이름을 변경하면

오류 없음

문제는 파일 이름에 있습니다.
"실행 가능한" 파일(exe, msi, bat, ...)로 작업하는 것은 금지되어 있습니다.

 
Sergey Dzyublik :

문제는 파일 이름에 있습니다.
"실행 가능한" 파일(exe, msi, bat, ...)을 만드는 것은 금지되어 있습니다.

네 확실합니다. 나는 도움말에서 그것에 대해 아무것도 찾지 못했습니다.

 

아마도 이것은 중요하지 않지만 컴파일할 때 오류 메시지 에서 엄격하게 말하면

void A::operator=(const A&) 여기(화살표가 있는 곳)는 불필요합니다(특히 기본적으로 생성되기 때문에).

 
하루에 네 번째로 ME(빌드 2037)의 100% CPU 정지 문제가 발생했습니다.

처음에는 100% 커널 로드가 나타나지만 ME는 잘 작동합니다. MT에서 코드 디버깅을 시작할 수도 있습니다.
그러나 소스 코드가 있는 다른 탭으로 전환하려고 하면 ME가 완전히 정지되고(프로세스를 종료해야 함) 새 탭 창이 열리지 않습니다(반쯤 열린 상태로 매달려 있음).
새 탭으로 이동하지 않고 ME를 닫으면 프로세스가 닫히지 않고 MT의 자식 프로세스가 되어 계속 커널을 100% 로드합니다.

문제는 코드를 개발할 때 갑자기 발생합니다(작은 프로젝트 , 8개 파일 <총 3K 줄). ME 코드 인텔리센스가 충돌할 수 있습니다.
 
만세, 우리는 ME 분석기를 충돌시키는 코드를 잡을 수 있었습니다.
ME는 시작 시 충돌합니다. 먼저 다른 편집기에서 코드를 편집하지 않으면 ME를 시작할 수 없습니다.

필요한 경우 5~7일 이내에 개발자에게 소스 코드를 제공합니다.
문제는 다음 줄에 있습니다.
 if (
닫히지 않은 대괄호의 수에 문제가 있는 것 같습니다.
 
다시 한 시간 동안 프로젝트 코드에서 오류를 검색한 결과 MT5(빌드 2049)의 "특징"이 나타났습니다.

터미널에서 Expert Advisor의 로그 중 일부는 단순히 표시되지 않을 수 있지만 사용자에게는 어떤 식으로든 알림이 표시되지 않습니다.
이 로그는 로그 파일에 있습니다. 모든 것이 정상입니다.

 #define PRINT(x) Print ( #x, ":" , string (x))

void OnStart (){  
   string test_name;
   string test_result;  
   
   test_name = "394_TEST_____" ;
   for ( int i = 0 ; i < 394 ; i++){
      PRINT(test_name + string (i+ 1 ));
   } 
   test_result = "RESULT_SUCCESS" ;
   PRINT(test_result);
   Sleep ( 5000 );
   
   
   test_name = "395_TEST_____" ;
   for ( int i = 0 ; i < 395 ; i++){
      PRINT(test_name + string (i+ 1 ));
   } 
   test_result = "RESULT_SUCCESS" ;
   PRINT(test_result);
   Sleep ( 5000 );

   
   test_name = "396_TEST_____" ;
   for ( int i = 0 ; i < 396 ; i++){
      PRINT(test_name + string (i+ 1 ));
   } 
   test_result = "RESULT_SUCCESS" ;
   PRINT(test_result);
   Sleep ( 5000 );
}

어떤 기적에 의해 로그 대기열은 레코드 번호 395를 내보내고 이 번호 전후의 모든 레코드는 MT 로그에 표시됩니다.
따라서 테스트 #395는 항상 실패합니다.