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

 
Alexandr Gavrilin :

최신 버전의 메타에디터에서 이중 유형으로 도대체 무슨 일이 일어나고 있는 걸까요? MT4와 MT5에서 -0.01 대신에 무슨 말도 안되는 소리를 씁니다. 이 숫자는 어디에서 왔으며 이전에는 변수가 0으로 재설정되었습니다.

메모리를 교체해야 합니다. 그리고 이전 버전에서는 정확히 동일했습니다.

 

컴파일러는 동일한 경우에 다르게 동작합니다.

코드베이스에서 2개의 파일 다운로드: https://www.mql5.com/en/code/15440

분명히 iTime() 이전에 만들어졌습니다. 그들 중 하나는 컴파일되고 두 번째는 다음과 같이 맹세합니다.

기능은 동일합니다.

도전도

욕을 하는 이유는 분명하고 이해하기 쉬우며 자동 고침으로 쉽게 수정할 수 있지만 비슷한 상황에서 다른 행동이 나타나는 것은 놀라운 일입니다.

추신:

컴파일된 표시기가 올바르게 작동합니다.

Volume Profile + Range v6.0
Volume Profile + Range v6.0
  • www.mql5.com
Volume Profile + Range v6.0 (former TPO). Distribution of deals by price levels at a given time interval. Displayed as a histogram. The width of the histogram at the level means the number of transactions carried out on it. If a broker provides data on a real volume, the indicator is able to display distribution on it as well. VP: display...
 
Alexey Viktorov :

메모리를 교체해야 합니다. 그리고 이전 버전에서는 정확히 동일했습니다.

또 어떤 기억? 그리고 메모리는 어떻습니까?

 

다음 코드를 실행했습니다.

 Temp.ask= 0 ; Temp.bid= 0 ; Temp.time= 0 ;
 Print ( "Старт Ask=" ,Temp.ask, " Bid=" ,Temp.bid, " Time=" ,Temp.time);
 Print("Ответ SymbolInfoTick=", SymbolInfoTick("",Temp) );
 Print ( "Ask=" ,Temp.ask, " Bid=" ,Temp.bid, " Time=" ,Temp.time);

그리고 이상한 결과를 얻었습니다.

Старт Ask= 0.0 Bid= 0.0 Time= 1970.01 . 01 00 : 00 : 00
Ответ SymbolInfoTick = true
Ask= 69.75 Bid= 69.33 Time= 2019.04 . 08 21 : 21 : 12

즉, 첫 번째 매개변수가 "" 인 SymbolInfoTick 은 어떤 이유로 차트 기호의 마지막 눈금을 반환하고 false가 아닌 0의 눈금을 반환합니다. 문서의 정의로 판단하더라도 그렇게 해서는 안됩니다.

 bool    SymbolInfoTick ( 
   string     symbol,     // символ 
   MqlTick &  tick         // ссылка на структуру 
   );
 
Igor Zakharov :

재산 엄격한?

 
Alexandr Gavrilin :

최신 버전의 메타에디터에서 이중 유형으로 도대체 무슨 일이 일어나고 있는 걸까요? MT4와 MT5에서 -0.01 대신에 무슨 말도 안되는 소리를 씁니다. 이 숫자는 어디에서 왔으며 이전에는 변수가 0으로 재설정되었습니다.

여기 2007년에 시작되는 빌드에서

항상 0.01이었지만 지금은 무엇인지 명확하지 않습니다.


 
Andrei Trukhanovich :

재산 엄격한?

둘 다 동일합니다:

나는 기호를 확인하지 않았지만(위에 표시된 것처럼 - 코드는 내 것이 아닙니다), 얼핏 보기에는 95% 동일합니다. 그리고 차이점은 오류가 발생하는 위치에 있지 않습니다. 그러나 어떤 이유로 하나는 컴파일되고 다른 하나는 컴파일되지 않습니다. 이미 스스로 고쳤지만 그 이상함을 개발자들에게 알린다.

 

이 버그는 최근 MT5 빌드에서 발생한 것으로 보입니다.

CryptEncode()CryptDecode() 함수의 버그. CRYPT_AES256 변환 방법 문제

다음 스크립트를 사용하여 최신(2009) 빌드의 버그를 재현할 수 있습니다.

 //+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
{
   string Txt = "The quick brown fox jumps over the lazy dog. A0 A1 A2 A3 A4 A5 A6 A7 A8 A9" ; 

//---Key
   uchar Key[ 32 ];
   ArrayInitialize (Key, 3 );

//---encode
   uchar SourceArr[], EncodedArr[];
   
   StringToCharArray (Txt, SourceArr); 
   
   int EncodeRes = CryptEncode ( CRYPT_AES256 , SourceArr, Key, EncodedArr);
   
//---decode
   uchar DecodedArr[];
   
   int DecodeRes = CryptDecode ( CRYPT_AES256 , EncodedArr, Key, DecodedArr);
   
   string DecodedTxt = CharArrayToString (DecodedArr);

//---res
   Print ( "Txt: " ,Txt);
   Print ( "EncodeRes: " ,EncodeRes);
   
   Print ( "DecodedTxt: " ,DecodedTxt);
   Print ( "DecodeRes: " ,DecodeRes);
   
//---
   return ;
}
 
Marat Sultanov :

이 버그는 최근 MT5 빌드에서 발생한 것으로 보입니다.

CryptEncode()CryptDecode() 함수의 버그입니다. CRYPT_AES256 변환 방법 문제

다음 스크립트를 사용하여 최신(2009) 빌드의 버그를 재현할 수 있습니다.

수정 사항은 새 빌드로 업데이트할 때만 나타날 가능성이 높습니다.
 
Vitaly Muzichenko :

여기 2007년에 시작되는 빌드에서

항상 0.01이었지만 지금은 무엇인지 명확하지 않습니다.


출력 코드 표시