Hatalar, hatalar, sorular - sayfa 1331

 

Yani - gerçekten belirsizlik olurdu

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

örnek farklı şekilde yeniden yazılırsa, derleyici tarafından garip bir şekilde üstesinden gelinir

 #import "Test.ex5"
         void f( uint );
#import
         void f( int   )  { Print ( __FUNCSIG__ ); }
void OnStart ()
{
         char ch = 0 ;
        f( ch ); // вызывается f(int), а должна генерироваться неопределенность
}
 
senin gerçeğin
 
Daha önce söylenip söylenmediğini bilmiyorum. MetaEditor'da, bir girdi değişkeninin adı yerel bir değişkenin adıyla (veya bir sınıf alanının adıyla) eşleştiğinde, ikincisi tıpkı bir girdi değişkeni gibi her yerde kırmızıyla vurgulanır. Kodu okurken kafa karışıklığı oluyor. Bunu düzeltmeliyiz.
 
Alexey Navoykov :
Daha önce söylenip söylenmediğini bilmiyorum. MetaEditor'da, bir girdi değişkeninin adı yerel bir değişkenin adıyla (veya bir sınıf alanının adıyla) eşleştiğinde, ikincisi tıpkı bir girdi değişkeni gibi her yerde kırmızıyla vurgulanır. Kodu okurken kafa karışıklığı oluyor. Bunu düzeltmeliyiz.

kod varlıklarına aynı isimleri vermek, kendinizi ayağınızdan vurma girişimidir :)

giriş değişkeninin adını değiştirmek daha kolaydır ve hiçbir sorun ve karışıklık olmaz...

 

MT4/845, Windows7/64bit. \n kullanarak metni yeni bir satıra çevirme hakkında soru. Bir komut dosyası yaptı:

 #property strict

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

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

Sonuç:


Text_2 ve Text_4 değerlerinin diğer satırlarda olması umuluyordu. Bana neyin yanlış olduğunu söyle.

 
Konstantin Karpov :

kod varlıklarına aynı isimleri vermek, kendinizi ayağınızdan vurma girişimidir :)

giriş değişkeninin adını değiştirmek daha kolaydır ve hiçbir sorun ve karışıklık olmaz...

Tavsiyeniz pratikte anlamsız. Hiç kimse özellikle aynı isimleri vermez. Yerel işlevler kodu kendi ayrı yaşamını yaşar. Ve harici program - kendi. Aynı zamanda, dış değişkenlerin adları zamanla değişebileceği gibi yeni dış değişkenler de eklenebilir. Ve bundan sonra birdenbire yüzlerce fonksiyondan birinde aynı ada sahip yerel bir değişken olacaksa , global değişkeni yeniden adlandırmanın neden gerekli olduğunu düşünüyorsunuz? Geliştiricilerin hataları için bahane aramayın.
 

MT4/845, Windows7/64bit. Senaryo:

 #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 ));
  }
//+------------------------------------------------------------------+

Sonuç:


0.55001234 numarasının nasıl yazdırılacağını bilen var mı?

 
Maxim Khrolenko :

MT4/845, Windows7/64bit. Senaryo:

Sonuç:


0.55001234 numarasının nasıl yazdırılacağını bilen var mı?

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

 
Maxim Khrolenko :

MT4/845, Windows7/64bit. \n kullanarak metni yeni bir satıra çevirme hakkında soru. Bir komut dosyası yaptı:

Açıkçası MT4'te bir hata (MT5'te her şey yolunda)
 
A100 :
Açıkçası MT4'te bir hata (MT5'te her şey yolunda)
Anlıyorum, umarım geliştiriciler buna dikkat eder.