Hatalar, hatalar, sorular - sayfa 2044

 
Alexey Navoykov :

Statik değişkenlerin başlatılmasıyla ilgili hata. Eski yapılarda yoktu.

Kimse için zor değil, bunu servis masasına gönderin. Artık orada onlarla ilişki kurmak istemiyorum.

Bu, burada tartışılan bir hata değil. prina

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Mql4 dilinin özellikleri, incelikleri ve çalışma yöntemleri

Alexey Viktorov , 2017.04.30 08:54

başlatma sırası: (bilmeyenler için)

Önce global düzeydeki değişkenler, sonra statik olanlar , fonksiyonların önceliğine bağlı olarak bulunan OnInit(), OnTick() veya OnCalculate() ... o zaman ilgilenmedim, ama bir kerede yerel olanlarla ilgilendim. Dolayısıyla bu kodda, işlevin statik değişkenlerin başlatılmasının bitiminden önce çağrıldığı, dolayısıyla söz konusu hatanın olduğu ortaya çıkıyor. Değişken başlatılmadan önce çağrılan işlev

 
fxsaber :

Bu, burada tartışılan bir hata değil. prina

Yani bu seninle Alexey Viktorov arasında tartışıldıysa, bunun bir hata olmadığına inanman için sebep veriyor mu? ) Üstelik bu kişi kendisinin programlama bilgisi seviyesinin sizinkinden çok daha düşük olduğunu beyan ediyor. Onlar. listeden çıkarılabilir. Sadece sen kalırsın) Kendinle tartış, yani bu bir hata değil)

Bu bir hata. Prensipte, bir değişkenin başlatılmasının göz ardı edilmesi ve kodun üzerinden atlanarak yürütülmeye devam etmesi mümkün değildir. Bu saçmalık. Ve başlatma sırası burada önemli değil. Değişken ya başlatılır ya da derleyici o konumda bir hata atar. Üçüncüsü yok. Aksi takdirde, bu bir programlama dili değil, ama ne olur.

 

Yeni yapılarda başka bir hata:

 template < typename T>
int F1( const T& array[])
{
   return ArrayMaximum (array);
}


template < typename T>
int F2( const T& array[]) { return F1(array); }


void OnStart ()
  {
     int arr[ 4 ]= { 1 , 2 , 3 };
     Print (F2(arr));   // Выдаёт -1 !!!
  }


Ah, burası ne kadar nemli. Yeni yapılara geçeceğimi düşündüm, aksi takdirde Market eskileri üzerinde ürünleri kabul etmez. Ve işte bir hata üzerinde bir hata!

 
Alexey Navoykov :

Yani bu seninle Alexey Viktorov arasında tartışıldıysa, bunun bir hata olmadığına inanman için sebep veriyor mu? ) Üstelik bu kişi kendisinin programlama bilgisi seviyesinin sizinkinden çok daha düşük olduğunu beyan ediyor. Onlar. listeden çıkarılabilir. Sadece sen kalırsın) Kendinle tartış, yani bu bir hata değil)

Bu bir hata. Prensipte, bir değişkenin başlatılmasının göz ardı edilmesi ve kodun üzerinden atlanarak yürütülmeye devam etmesi mümkün değildir. Bu saçmalık. Ve başlatma sırası burada önemli değil. Değişken ya başlatılır ya da derleyici o konumda bir hata atar. Üçüncüsü yok. Aksi takdirde, bu bir programlama dili değil, ama ne olur.

Üstünü çizebilirsin, parmaklarımı hiç açmadım "ben nasıl bir programcıyım"...

Ve anne belgeleri okumak için sipariş vermiyor ??? Özellikle bunun için, belgelerden bir alıntı ekledim

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Mql4 dilinin özellikleri, incelikleri ve çalışma yöntemleri

Alexey Viktorov , 2017.04.29 12:50

Ve yardımda yazılan hiçbir şey, statik bir değişkenin ... kendiniz için okuduğu

Statik bir değişken, herhangi bir ifadeyle başlatılabilen basit bir yerel değişkenin aksine , türüne karşılık gelen bir sabit veya sabit bir ifadeyle başlatılabilir.


Ama bir işlev değil.

Bu nasıl çalışır

 #property strict
#property indicator_chart_window

int TestBrokenStatic()
{
   static int stInt = 101 ;
   stInt++;
   return stInt;
}

int OnInit ()
{
   static int result = 0 ;
   result = TestBrokenStatic();
   Print ( "TestStatic Expected result 102   - Actual result=" , result);
   result = TestBrokenStatic();
   Print ( "TestStatic Expected result 103   - Actual result=" , result);
   
   return INIT_SUCCEEDED ;
}

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
   return rates_total;
}
2017.04 . 29 13 : 49 : 51.546 !Test USDCHF,M15: TestStatic Expected result 103    - Actual result= 103
2017.04 . 29 13 : 49 : 48.457 !Test USDCHF,M15: TestStatic Expected result 102    - Actual result= 102
2017.04 . 29 13 : 49 : 40.089 Custom indicator Test\!Test USDCHF,M15: loaded successfully

 
Alexey Navoykov :

Yeni yapılarda başka bir hata:

Ah, burası ne kadar nemli. Yeni yapılara geçeceğimi düşündüm, aksi takdirde Market eskileri üzerinde ürünleri kabul etmez. Ve işte bir hata üzerinde bir hata!

Ve bana doğruyu gösteriyor!

 
Alexey Viktorov :

Üstünü çizebilirsin, parmaklarımı hiç açmadım "ben nasıl bir programcıyım"...

Ve anne belgeleri okumak için sipariş vermiyor ??? Özellikle bunun için, belgelerden bir alıntı ekledim

Tamam o zaman kusura bakmayın hemen fark etmemişim Şaşırtıcı, elbette, bunu nasıl sinsice değiştirmeyi başardılar ve kimseye hiçbir şey söylemediler. O zaman derleyicinin neden yasadışı bir işlemin gerçekleştirildiği gerçeğine hiçbir şekilde tepki vermediği açık değildir. Onlar. yine de bir bug var
 
fxsaber :

Ve bana doğruyu gösteriyor!


Hmm, yapınız nedir? bende 1653 var

 
Alexey Navoykov :

Yani bu seninle Alexey Viktorov arasında tartışıldıysa, bunun bir hata olmadığına inanman için sebep veriyor mu? ) Üstelik bu kişi kendisinin programlama bilgisi seviyesinin sizinkinden çok daha düşük olduğunu beyan ediyor. Onlar. listeden çıkarılabilir. Sadece sen kalırsın) Kendinle tartış, yani bu bir hata değil)

Bu bir hata. Prensipte, bir değişkenin başlatılmasının göz ardı edilmesi ve kodun üzerinden atlanarak yürütülmeye devam etmesi mümkün değildir. Bu saçmalık. Ve başlatma sırası burada önemli değil. Değişken ya başlatılır ya da derleyici o konumda bir hata atar. Üçüncüsü yok. Aksi takdirde, bu bir programlama dili değil, ama ne olur.

Sonuç için mantıklı (tutarlı) bir açıklama bulursam bir hata görmüyorum. Sonuç C++ ile eşleşmiyorsa hata kanıtının kabul edilebilir olduğunu düşünmüyorum. C++'da birisi öyle düşündü ve yaptı. Ve öyle düşünmeyebilir ve buna göre yapmayabilir. Bu nedenle, orada bir şeye atıfta bulunmamak, olması gerektiği gibi bir tür içsel kavrama dayanmak daha iyidir. Ve "kendine ait" olması arzu edilir, gerçekten de kişinin kendine ait olması. Ve programlama deneyimi kazandıkça "olması gerektiği gibi" klişelerin algılanamaz şekilde dayatılmasının sonucu değil.

Yanlış yapmaktan çekinmedim. Yavaş yavaş kendi kendime öğreniyorum.

 
Alexey Navoykov :

Hmm, yapınız nedir? bende 1653 var

1653x64.

 
fxsaber :

1653x64.

O zaman tutarsızlığın nereden geldiği garip ...


Başkasının kendisi için kontrol etmesine izin verin.

Neden: