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

 
문제. MQL에서 빈 클래스의 크기는 16바이트(64비트 시스템에서)입니다. 무엇 때문에? 분명히 8바이트는 가상 테이블에 대한 포인터가 차지합니다(문서에 따르면 모든 클래스에 MCL이 있음). 나머지 8개는?
 
동료 여러분, 아무도 그런 문제에 직면하지 않았습니까? 오늘 아침에 터미널이 biuld 1430으로 업데이트되었습니다. 공교롭게도 어제 저는 Expert Advisor를 표준 라이브러리 를 통해 파일로 작업하도록 다시 작성했습니다(그 전에는 표준 파일 작업을 통한 성공적인 구현이 없었습니다). 그러나 테스트는 하지 않았습니다. 오전으로 미뤘습니다. 결과는 다음과 같습니다. EA는 테스트 중에 파일을 찾지 않습니다. FileIsExist 함수는 항상 false를 반환합니다. 잼이 어디에 있는지 - 변경하는 동안 나와 함께인지 또는 업데이트 때문에인지 명확하지 않습니다. 트릭은 문서 에 테스트할 때 파일이 MQL5/Tester/Files 폴더에 있어야 한다고 나와 있다는 것입니다. 그러나 실제로는 경로가 다릅니다: ...\Roaming\MetaQuotes\Tester\...some 16진수 쓰레기...\Agent-127.0.0.1-3000\MQL5\Files. 즉, 최소한 문서에 오류가 있습니다. 그러나 가장 중요한 것은 테스트가 시작되면 OnInit에 FileIsExist 기능이 있고 파일에 액세스하는 첫 번째 파일이지만 테스트가 시작되면 수동으로 배치된 파일이 지정된 폴더에서 삭제된다는 것입니다. 그래서 질문이 생깁니다. 테스트하는 동안 파일은 어디에 있어야 합니까? 그리고 실제로 무슨 일이 일어나고 있습니까?
 
BlackTomcat :
동료 여러분, 아무도 그런 문제에 직면하지 않았습니까? 오늘 아침에 터미널이 biuld 1430으로 업데이트되었습니다. 공교롭게도 어제 저는 Expert Advisor를 표준 라이브러리 를 통해 파일로 작업하도록 다시 작성했습니다(그 전에는 표준 파일 작업을 통한 성공적인 구현이 없었습니다). 그러나 테스트는 하지 않았습니다. 오전으로 미뤘습니다. 결과는 다음과 같습니다. EA는 테스트 중에 파일을 찾지 않습니다. FileIsExist 함수는 항상 false를 반환합니다. 잼이 어디에 있는지 - 변경하는 동안 나와 함께인지 또는 업데이트 때문에인지 명확하지 않습니다. 트릭은 문서 에 테스트할 때 파일이 MQL5/Tester/Files 폴더에 있어야 한다고 나와 있다는 것입니다. 그러나 실제로는 경로가 다릅니다: ...\Roaming\MetaQuotes\Tester\...some 16진수 쓰레기...\Agent-127.0.0.1-3000\MQL5\Files. 즉, 최소한 문서에 오류가 있습니다. 그러나 가장 중요한 것은 테스트가 시작되면 OnInit에 FileIsExist 기능이 있고 파일에 액세스하는 첫 번째 파일이지만 테스트가 시작되면 수동으로 배치된 파일이 지정된 폴더에서 삭제된다는 것입니다. 그래서 질문이 생깁니다. 테스트하는 동안 파일은 어디에 있어야 합니까? 그리고 실제로 무슨 일이 일어나고 있습니까?
일반적으로 FILE_COMMON 플래그를 사용하여 문제를 우회 했습니다.
파일은 ...\Roaming\MetaQuotes\Terminal\Common\Files 폴더에 있습니다. 테스트할 때 거기에서 제거되지 않고 정상적으로 읽힙니다.
 

질문: MQL4 포럼에서 내 메시지를 어떻게 찾을 수 있습니까? 약 2년 전쯤에 첨부된 코드로 토픽이 생성되었고, 이제 이 코드가 흥미롭게 되었지만 포럼 검색은 침묵합니다. 내 간행물에 가면이 주제가 없습니다. (삭제?)

 

매크로가 한 번 이상 사용되었는지 여부를 확인하는 방법은 무엇입니까?

 
fxsaber :

매크로가 한 번 이상 사용되었는지 여부를 확인하는 방법은 무엇입니까?

다음과 같이 다소:

 #ifndef __MY_MACROS__   // если макрос не использован
   #define __MY_MACROS__
//----------------------------------------
// тут ваш код использующий макрос
//----------------------------------------
#endif // __MY_MACROS__
 
coderex :

다음과 같이 다소:

나는 다른 것을 의미했다
 #define MACROS(A) A

void Func()
{
  MACROS(A) // Если закомментировать, то макрос ни разу не использовался
}

// Вот здесь хотелось бы понять, использовался ли хоть раз макрос или нет.
 
OnInit가 정의되었는지 여부를 소스에서 확인하는 방법을 알아내도록 도와주세요.
 
fxsaber :
나는 다른 것을 의미했다
가장 간단한 것은 매크로 자체에서 덮어쓴 전역 변수 의 매크로 호출 횟수입니다.
 
Sergei Vladimirov :
가장 간단한 것은 매크로 자체에서 덮어쓴 전역 변수 의 매크로 호출 횟수입니다.
이러한 옵션이 있지만 불행히도 모든 매크로에 적합하지는 않습니다.