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

 

그래서 - 정말로 불확실성이 있을 것입니다.

 void f( uint )  { Print ( __FUNCSIG__ ); }
void f( int   )  { Print ( __FUNCSIG__ ); }
void OnStart ()
{
         char ch = 0 ;
        f( ch ); // неопределенность 
}

예제가 다르게 다시 작성되면 컴파일러에 의해 이상하게 극복됩니다.

 #import "Test.ex5"
         void f( uint );
#import
         void f( int   )  { Print ( __FUNCSIG__ ); }
void OnStart ()
{
         char ch = 0 ;
        f( ch ); // вызывается f(int), а должна генерироваться неопределенность
}
 
너의 진실
 
이미 말했는지 안했는지 모르겠다. 메타에디터에서 입력 변수의 이름이 지역 변수 의 이름(또는 클래스 필드의 이름)과 일치할 때, 후자는 입력 변수와 마찬가지로 모든 곳에서 빨간색으로 강조 표시됩니다. 코드를 읽을 때 혼란이 있습니다. 이 문제를 해결해야 합니다.
 
Alexey Navoykov :
이미 말했는지 안했는지 모르겠다. 메타에디터에서 입력 변수의 이름이 지역 변수 의 이름(또는 클래스 필드의 이름)과 일치할 때, 후자는 입력 변수와 마찬가지로 모든 곳에서 빨간색으로 강조 표시됩니다. 코드를 읽을 때 혼란이 있습니다. 이 문제를 해결해야 합니다.

코드 엔터티에 동일한 이름을 지정하는 것은 발에 총을 쏘려는 시도입니다. :)

입력 변수의 이름을 변경하는 것이 더 쉽고 문제와 혼란이 없을 것입니다 ...

 

MT4/845, Windows7/64비트. \n을 사용하여 텍스트를 새 줄로 번역하는 방법에 대한 질문입니다. 스크립트를 만들었습니다:

 #property strict

string t1= "Text_1" ;
string t2= "Text_2" ;

void OnStart ()
  {
   Print (t1+ "\n " +t2);
   Print ( "Text_3" + "\n Text_4" );
  }

결과:


Text_2 및 Text_4의 값이 다른 행에 있기를 바랍니다. 무슨 일이야.

 
Konstantin Karpov :

코드 엔터티에 동일한 이름을 지정하는 것은 발에 총을 쏘려는 시도입니다. :)

입력 변수의 이름을 변경하는 것이 더 쉽고 문제와 혼란이 없을 것입니다 ...

당신의 조언은 사실상 무의미합니다. 아무도 구체적 으로 같은 이름을 지정하지 않습니다. 로컬 함수의 코드는 자체적으로 별도의 삶을 살고 있습니다. 그리고 외부 프로그램 - 자체. 동시에 외부 변수의 이름은 시간이 지남에 따라 변경될 수 있으며 새로운 외부 변수가 추가될 수 있습니다. 그리고 그 후에 갑자기 수백 개의 함수 중 하나에 같은 이름을 가진 지역 변수 가 있게 된다면 전역 변수의 이름을 바꿔야 한다고 생각하는 이유는 무엇입니까? 개발자의 버그에 대한 변명을 찾지 마십시오.
 

MT4/845, Windows7/64비트. 스크립트:

 #property strict

double d1 = 2.009745110811111111111111111 ;
double d2 = 3.654 ;
double d3;
//---
void OnStart ()
  {
   d3=d1/d2;
   Print ( "A: d3 = " , DoubleToString (d3));
   Print ( "B: d3 = " , DoubleToStr (d3));
   Print ( "C: d3 = " , DoubleToString (d3, 16 ));
   Print ( "D: d3 = " , DoubleToString (d3, 8 ));
   Print ( "E: d3 = " , DoubleToString ( NormalizeDouble (d3, 8 )));
   Print ( "F: d3 = " , DoubleToString ( NormalizeDouble (d3, 7 )));
   Print ( "G: d3 = " , DoubleToString ( NormalizeDouble (d3, 8 ), 7 ));
   Print ( "H: d3 = " , DoubleToString ( NormalizeDouble (d3, 8 ), 8 ));
  }
//+------------------------------------------------------------------+

결과:


숫자 0.55001234를 인쇄하는 방법을 아는 사람이 있습니까?

 
Maxim Khrolenko :

MT4/845, Windows7/64비트. 스크립트:

결과:


숫자 0.55001234를 인쇄하는 방법을 아는 사람이 있습니까?

 Print ( "C: d3 = " , DoubleToString (d3, 8 ));

 
Maxim Khrolenko :

MT4/845, Windows7/64비트. \n을 사용하여 텍스트를 새 줄로 번역하는 방법에 대한 질문입니다. 스크립트를 만들었습니다:

분명히 MT4의 버그(MT5에서는 모든 것이 정상입니다)
 
A100 :
분명히 MT4의 버그(MT5에서는 모든 것이 정상입니다)
개발자들이 이 점에 주목해 주기를 바랍니다.