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

 
Sergei Vladimirov :

"박사님, 뭔가 아파요!" © )

그러한 표현의 예를 보여주십시오. 재생할 수 있는. 그러면 뭔가 대답할 수 있습니다.

ulong PackMagic( int bs, int type, int frac, int ll) //bs=0 - sell, bs=1 - buy (в смысле ll), type - это тип FPST
     {
         int d1;
         ulong i, frac1=frac, ll1=ll, type1=type;
        
        i= 1 ; d1= 10 ;
         while (ll>=d1) {d1=d1* 10 ; i=i+ 1 ;}
              
         if (type== 0 || type== 2 ) return (frac1+ll1*Pow10frac_length+i*Pow10(frac_length+i)+
         type1*Pow10(frac_length+i+ 1 )+bs*Pow10(frac_length+i+ 2 )+Id1_class*Pow10(frac_length+i+ 3 ));
         else return (ll1+i*Pow10(i)+type1*Pow10(i+ 1 )+bs*Pow10(i+ 2 )+Id1_class*Pow10(i+ 3 ));
     }    
    
     ulong Pow10( ulong power) // power>0
     {
         ulong r= 10 ;
         if (power== 0 ) return 1 ;
         for ( ulong i= 2 ; i<=power; i++) r=r* 10 ;
         return r;
     }

문제는 PackMagic 기능에 있습니다. 외부 변수 int frac_length=2; int Pow10frac_length=100; 정수 ID1_class=1;.

 
Sergey Kudryavtsev :
문제는 PackMagic 기능에 있습니다. 외부 변수 int frac_length=2; int Pow10frac_length=100;.
오류의 예를 제공하지 않았습니다. 인수의 어떤 값에 대해 이 함수는 잘못된 값(무엇을?)을 반환하고 올바른 결과는 무엇이어야 합니까?
 
Sergei Vladimirov :
오류의 예를 제공하지 않았습니다. 인수의 어떤 값에 대해 이 함수는 잘못된 값(무엇을?)을 반환하고 올바른 결과는 무엇이어야 합니까?

예를 들어:

Id1_class=1, bs=0, type=0, frac=99, ll=1, frac_length=2, Pow10frac_length=100, 반환값은 11299입니다.

1001199여야 합니다. Expert Advisor에서 클래스의 기능, Open의 데모 계정.

오류가 발생하면 11299가 항상 반환된다는 것은 사실이 아닙니다.

 
재생할 수 없습니다. 이러한 매개변수를 사용하면 함수는 일관되게 1001199를 반환합니다. 함수 자체에도 오류가 없습니다. 그래서 할 말이 없습니다. 아마도 Expert Advisor의 문제는 이 함수가 아니라 다른 곳에 있으며 매개변수 값이 예상한 것과 다른 함수로 전달될 가능성이 큽니다. 따라서 결과는 예상과 다릅니다.
 

재생산. 코드를 스크립트에 작성했는데 디버그 모드에서 실행했을 때 정확한 값(1001199)을 주고, 릴리스를 컴파일하고 MT5의 트리에서 실행하면 안정적으로 11199가 나옵니다. 문제를 현지화할 수 있었고, 이를 재현하는 코드는 다음과 같습니다.

int frac_length = 2 ;

void OnStart ()
{
        
         ulong i = 1 ;

         ulong a1 = Pow10(frac_length + i);
         ulong a2 = Pow10(frac_length + i + 1 );
         ulong a3 = Pow10(frac_length + i + 2 );
         ulong a4 = Pow10(frac_length + i + 3 );
        
         Print ( IntegerToString (a1), " " , IntegerToString (a2), " " , IntegerToString (a3), " " , IntegerToString (a4));

}  

ulong Pow10( const ulong power)
{
         ulong r = 10 ;
        
         if (power == 0 )
                 return 1 ;
                
         for ( ulong i = 2 ; i <= power; i++)
                r = r* 10 ;
                
         return r;
}

디버그 모드에서는 올바르게 작동합니다. 그러나 MT5의 내비게이터에서 릴리스를 시작하면 말도 안되는 소리를 내거나("1000 10000 100000 1000000" 대신 "1000 10000 100 100") MT5가 일반적으로 프로세서 코어 중 하나의 전체 로드로 멈춥니다.

두 가지 방법으로 처리됩니다. 다음 중 하나:

         ulong a1 = Pow10(frac_length + i);
         ulong a2 = Pow10(frac_length + i + ( ulong ) 1 );
         ulong a3 = Pow10(frac_length + i + ( ulong ) 2 );
         ulong a4 = Pow10(frac_length + i + ( ulong ) 3 );

또는 Start() 함수 내에서 전역 변수 frac_length를 이동합니다.

이것은 실제로 컴파일러 버그입니다. 서비스 데스크에 작성하십시오 .

 
MT4의 무게는 1.8 기가바이트(RAM)가 되었습니다. UPU를 통째로 먹어버려서 두 번째 터미널을 켤 수가 없어요. MT에서 RAM을 "청소"하는 방법을 알려주지 않습니까?
 

Market Product에 대해 새로 게시된 자체 리뷰 위로 마우스를 가져가면 여러 제안/작업이 나타납니다. "편집"을 선택하고 리뷰를 변경하면 "업데이트"를 클릭한 후 "권한 없음" 오류가 팝업됩니다.

SD에서 애플리케이션을 생성할 수 없음 - 오류가 발생했습니다.

 
fxsaber :
Market Product에 대해 새로 게시된 자체 리뷰 위로 마우스를 가져가면 여러 제안/작업이 나타납니다. "편집"을 선택하고 리뷰를 변경하면 "업데이트"를 클릭한 후 "권한 없음" 오류가 팝업됩니다.

브라우저의 이름과 버전을 지정하십시오.
크롬 56.0.2924.87에서는 리콜 페이지를 수동으로 새로 고침하거나 새로 고치지 않고 비행이 정상입니다.

 
fxsaber :

SD에서 애플리케이션을 생성할 수 없음 - 오류가 발생했습니다.

분명히 www.mql5.com에 대한 쿠키를 지워야 합니다.
분명히 안티 CSRF 토큰을 확인하는 원칙이 업데이트되었습니다.

크롬에서는 다음과 같이 할 수 있습니다.
웹사이트 www.mql5.com => 개발자 패널에서 F12 키를 눌러 응용 프로그램 탭으로 이동 => 쿠키 섹션 => 쿠키 기록의 RMB => 다음에서 모두 지우기 ...
 
Sergey Dzyublik :

브라우저의 이름과 버전을 지정하십시오.
크롬 56.0.2924.87에서 리콜 페이지를 수동으로 새로 고치거나 새로 고치지 않은 상태에서 비행은 정상입니다.

휴대용 크롬 버전 45.0.2454.85 + 프리깃.