Hatalar, hatalar, sorular - sayfa 2720

 
Bir kez daha, MT5 kodunu (derleme 2380) derlerken gereksiz uyarılarla ilgili bir sorun var.
Lütfen geliştirici için gereksiz olan derleyici uyarılarını devre dışı bırakmayı düşünün:
declaration of 'm_range' hides member   
   in template 'NodeArray < NodeArray <TailArray<int> >>' specified with [T=NodeArray < TailArray <int> >]      
   see previous declaration of 'm_range'        
declaration of 'm_range' hides member
   in template 'NodeArray < NodeArray <NodeArray<TailArray<int> >>>' specified with [T=NodeArray < NodeArray <TailArray<int> >>]
   see previous declaration of 'm_range'

Kaynak kodu, çok boyutlu dizi prototipi (çevrimiçi C++: https://onlinegdb.com/Hk7QjyRdL ):
 #define PRINT(x) ; Print ( #x, ":" , string (x))

template < typename T>
class TailArray{
protected :
   int m_index;
   T data[];
   
protected :
   TailArray(){}   
public :     
   TailArray( int size){
       ArrayResize (data, size);
      m_index = 0 ;
   };
   
   T value(){
       int index = m_index;
      m_index = 0 ;
       return data[index];
   }
   const T operator =( const T value){
      data[m_index] = (T)value;
      m_index = 0 ;
       return value;
   };
};

template < typename T>
class NodeArray : public T{
protected :
   int m_range;
   
protected :
   NodeArray(){}   
public :     
   NodeArray( const NodeArray &src){ this = src;}
   template < typename T_int> NodeArray(T_int count, T_int r1) : T(count * r1), m_range(r1){}
   template < typename T_int> NodeArray(T_int count, T_int r1, T_int r2) : T(count * r1, r2), m_range(r1){}
   template < typename T_int> NodeArray(T_int count, T_int r1, T_int r2, T_int r3) : T(count * r1, r2, r3), m_range(r1){}
   
   T* operator []( int index){
       this .m_index = this .m_index * this .m_range + index;
       return & this ;
   }
};


#define MultiArray(type, size) MultiArray ##size(type)
#define MultiArray2(type) NodeArray<NodeArray<TailArray<type>>>
#define MultiArray3(type) NodeArray<NodeArray<NodeArray<TailArray<type>>>>


template < typename T>
class MultiArrayCreate{
public :
   static MultiArray(T, 2 ) Size( int range_1, int range_2){
       return (MultiArray(T, 2 )(range_1, range_2, 1 ));
   }
   static MultiArray(T, 3 ) Size( int range_1, int range_2, int range_3){  
       return (MultiArray(T, 3 )(range_1, range_2, range_3, 1 ));
   }
};


void OnStart (){
   MultiArray( int , 2 ) arr_2 = MultiArrayCreate< int >::Size( 4 , 4 );
   MultiArray( int , 3 ) arr_3 = MultiArrayCreate< int >::Size( 4 , 4 , 4 );
   
   arr_2[ 0 ][ 0 ] = 2233 ;
   arr_3[ 3 ][ 3 ][ 3 ] = 4455 ;
   PRINT(arr_2[ 0 ][ 0 ].value());
   PRINT(arr_3[ 3 ][ 3 ][ 3 ].value());
}
 

Herkese iyi günler!

CodeBase'de kayıt ve sonraki yayın sırasında betiğin açıklamasına nasıl resim ekleyeceğimi söyler misiniz?

Sadece bir nedenden dolayı Youtube'dan bir video eklemem var ..., ancak resim eklemek için HİÇBİR simge yok! :(

Şimdiden teşekkürler! :)

 
gsl17 :

Herkese iyi günler!

CodeBase'de kayıt ve sonraki yayın sırasında betiğin açıklamasına nasıl resim ekleyeceğimi söyler misiniz?

Sadece bir nedenden dolayı Youtube'dan bir video eklemem var ..., ancak resim eklemek için HİÇBİR simge yok! :(

Şimdiden teşekkürler! :)

Resim ekle düğmesi düğme çizimi bazı minimum derecelendirmelerden başlayarak kullanıcı tarafından kullanılabilir. Açıkçası, düğmeyle çalışmak için yeterli puanınız yok düğme çizimi .

 
Vladimir Karputov :

Bir resim ekleme düğmesi, belirli bir minimum derecelendirmeden başlayarak kullanıcı tarafından kullanılabilir. Açıkçası, düğmeyle çalışmak için yeterli puanınız yok.

Açıklamalar için teşekkürler.

Üzüntü...

Not Evet, gerçekten de CodeBase'e ilk kez bir komut dosyası gönderiyorum.

 
2390 mt 5 profiler oluştur, gerçek veri no.
 

Şablon işlevi/sınıf önbelleğindeki kusurlar:
( MT5(build 2390 tarafından düzeltildi )) *** ( yukarı ) Tanımsız Davranış, "C" dahili tipine sahip karmaşık, çoklu sarılmış bir nesne yaratırsınız ve bunun tamamen farklı bir veri türü olduğu ortaya çıkar, belki "B", belki "int", ne istersen...
( MT5(build 2390) tarafından düzeltildi ) * Derleme Hatası, fonksiyon işaretçi argümanını const ref şablonu olarak geçirirken oluşan hata.
( MT5(build 2390 tarafından düzeltildi )) * Derleme Hatası, bir B<int> nesnesi bir B<void*> nesnesinden sonra oluşturulabilir, ancak daha önce yapılırsa bir derleme hatası oluşur.


Şablon işlevinin/sınıfının çalışmasındaki kusurlar:
(MT5(build 2390 tarafından düzeltildi )) ** ( yukarı ) Derleme Hatası, şablon işlevinin şablon parametresi için dahili sınıfa erişmeye çalışırken hata.
( MT5(build 2390 tarafından düzeltildi )) * ( yukarı ) Derleme Hatası, bir şablon işlevi içindeki bir hata, açık bir döküm işleminin parçası olarak geçirilen bir işaretçi, diğer durumlarda bir sınıf gibi davranır - bir işaretçi gibi.
(MT5(build 2390) tarafından düzeltilmedi ) *** Derleme Hatası, Uygun olmayan uyarı çıktısıyla ilgili ana şikayet, "kullanımdan kaldırılan davranış, gizli yöntem çağrısı gelecekteki bir MQL derleyici sürümünde devre dışı bırakılacaktır". Mevcut uygulama, serçelere top atışıdır.
(MT5(build 2390 tarafından sabitlenmedi )) ** Derleme Hatası, dönüş değeri, parametre tipi şablon işlevi argümanının türü tarafından verilen bir şablon sınıfı içinde bulunan bir dahili sınıf olduğunda, hata bir şablon işlevinin dönüş değerini etkiler .
(MT5(build 2390) tarafından düzeltilmedi ) ** Derleme Hatası, kalıtımda ve dahili sınıfta aynı sınıf adı kullanıldığında temel sınıf çağrılırken şablon yapıcısında ad alanı ve kapsamla ilgili hata.
(MT5(build 2390 tarafından düzeltilmedi )) * Derleme Hatası, çağrı aşırı yüklenmiş şablon olmayan bir işlevden yapıldığında açık argüman türleri ile bir şablon işlevi çağrılırken oluşan hata.
(MT5(build 2390 tarafından düzeltilmedi )) Derleme Hatası, dahili sınıf tanımlanırken hata - temel sınıf belirtilirken genel ad alanına açıkça atıfta bulunmak mümkün değildir.
(MT5(build 2390) tarafından düzeltildi ) ** Derleme Hatası, dahili sınıf kullanılırken şablon sınıfı kod oluşturma hatası.
( MT5(build 2390) tarafından düzeltildi ) * Derleme Hatası, bir şablon yöntemi/sınıfı oluşturulurken oluşan hata, bir şablon parametresinin "otomatik olarak değiştirilmesi" süreci, ana program kodunun kapsamını aşıyor.
( MT5(build 2390) tarafından düzeltildi ) * Derleme Hatası, bir şablon sınıfı bir şablon yöntemi için bir dönüş değeri olarak hareket ettiğinde otomatik olarak şablon sınıfı kodu oluşturmayan bir hata.
( MT5(build 2390 tarafından düzeltildi )) * Derleme Hatası, bir dahili yapıyı bir şablon işlevine geçirirken oluşan hata, elde edilen veri türü , şablon sınıfındaki başka bir dahili yapı için temel veri türü olarak kullanılamaz.
( MT5(build 2390 tarafından düzeltildi )) * Derleme Hatası, bir şablon sınıfı içinde bir şablon işlevi bildirirken yeniden kullanılan şablon türü adlarının kontrol edilmemesi, beklenmeyen davranışa neden oluyor.
(MT5(build 2390) tarafından düzeltildi ) Derleme Hatası, nesne bir şablon sınıfı/yapısı olduğunda "yerinde oluşturulan" nesnenin döndürülmesiyle ilgili birçok hata.
( MT5(build 2368) tarafından düzeltildi ) * (Bu bir hata değil, bu bir özellik) temel sınıf yapıcısında, bir temel sınıf nesnesine bir işaretçiyi bir ebeveyne bir işaretçiye dönüştürmek için açık bir typecast gerçekleştirmek mümkün değildir sınıf.
(MT5(build 2390 tarafından düzeltilmedi )) (yeni) Şablon parametresi temel sınıf olduğunda, bir şablon sınıfında miras alınırken varsayılan erişim değiştiricisi kullanılırken Derleme Hatası.
( MT5(build 2390) tarafından düzeltilmedi )) * (yeni) Açık bir temel sınıf aracılığıyla bir atama operatörü çağrılırken Derleme Hatası. Sorun, şablon parametresi temel sınıf olan bir şablon sınıfı için kendini gösterir.


C++ ile karşılaştırıldığında MQL'de aşırı yüklenmiş işlev çağrısı önceliklerinin uyumsuzluğuyla ilgili kusurlar:
( MT5(build 2390 tarafından düzeltildi )) ** ( yukarı ) Aşırı yüklenmiş şablon işlevlerinden ilki tamamen özelleştirilmiş bir şablon temel sınıfını ve ikincisi özel olmayan bir şablon temel sınıfını kullandığında Derleme Hatası.
( MT5(build 2390 tarafından düzeltilmedi )) ** Derleme Hatası, şablon işlev kodu oluşturulurken, geçirilen parametreler için uygun bir imzaya sahip aşırı yüklenmiş bir şablon işlevi olmasına rağmen bir derleme hatası oluşuyor.
(MT5(build 2390) tarafından düzeltilmedi ) * Derleme Hatası, farklı sayıda şablon parametresiyle aşırı yüklenmiş şablon işlevleri çağrılırken "aşırı yüklenmiş işleve belirsiz çağrı".
( MT5(build 2390 tarafından düzeltildi )) ** ( yukarı ) Derleme Hatası, aşırı yüklenmiş şablon işlevlerine yapılan çağrıların önceliği aslında şablon parametresinin türüne bağlıdır, bu teorik olarak derleme sonucunu hiçbir şekilde etkilememelidir.
( MT5(build 2390) tarafından düzeltildi ) *** A <= B <= C <= D sınıflarının kalıtımı olduğunda ve örneğin biri A* parametreli ve ikincisi iki aşırı yükleme işlevi uygulandığında Derleme Hatası B* ile, MQL'de bir C* veya D* nesnesinin böyle bir işlevine geçiş bir derleme hatasına neden olur.
(MT5(build 2390) tarafından düzeltildi ) ** Çalışma zamanı, aşırı yüklenmiş şablon işlevlerine yapılan çağrılar için öncelik uyuşmazlığı.
( MT5(build 2390) tarafından düzeltildi ) *** Çalışma zamanı, bir işaretçi türü argümanı için uygun bir aşırı yüklenmiş işlev seçerken, türü temel sınıf yerine üst sınıfa bir işaretçiye çeviren işlev önceliklidir.
(MT5(build 2390) tarafından düzeltilmedi ) *** (yeni) Derleme Hatası, aşırı yüklenmiş şablon işlevlerinin çağrı önceliklerinde hata..
( MT5(build 2390 tarafından düzeltilmedi )) ** (yeni) Derleme Hatası, veri türü rengine sahip bir bağımsız değişken için bir işlev çağrılırken, eşleşen bir imzaya sahip aşırı yüklenmiş bir şablon işlevi olmasına rağmen örtük türde bir konuşma uygulanıyor renk veri türü ile.
( MT5(build 2390 tarafından düzeltilmedi )) * (yeni) Derleme Hatası, açık uzmanlaşmaya rağmen, aşırı yüklenmiş bir şablon işlevi çağrılırken hala varsayılan şablon işlevi çağrılır, bu da yığın taşmasına neden olur..
( MT5(build 2390 tarafından düzeltilmedi )) * (yeni) Derleme Hatası, bir işlev işaretçileri dizisi kullanıldığında işaretçisi aracılığıyla bir işlev çağrılırken derleme hatası .


MetaEditor ile ilgili hatalar:
(ME5(build 2390) tarafından düzeltilmedi ) *** (yeni) Hata ayıklayıcı, bir yapı statik yönteminde bir kesme noktasına ulaşmak MT terminalinin askıda kalmasına neden oluyor.
( ME5(build 2390 tarafından düzeltilmedi )) ** (yeni) Derleme, derleme hatası açıklaması 256 karakter sınırına sığmıyor ve kesiliyor, sonuç olarak hatanın hangi veri türü için oluştuğunu anlamak imkansız çünkü gerekli kısım kesildi.
(ME5(build 2390) tarafından düzeltilmedi ) ** (yeni) Hata Ayıklayıcı, StepInto (F11) çalışmıyor ve kesme noktaları ayarlandı.
(ME5(build 2390) tarafından düzeltilmedi ) * (yeni) Hata ayıklayıcı, (F5) tuşuna basarken kod yürütmeye devam etmek yerine bir kesme noktası tetikledikten sonra, aslında herhangi bir kod çalıştırmadan aynı kesme noktasını yeniden tetikler.
( sabit değil ME5(build 2390)) * (yeni) Derleme, Hata Açıklaması ve Parametre bilgisinde hatalı işlev şablonu parametre imzası.
(ME5(build 2390 tarafından düzeltilmedi )) * (yeni) MetaEditor, Değiştirme işlevi (Сtrl + H), gerekli uygulama alanı seçildiğinde "Geri yön" ile birlikte etkinleştirilmiş "Seçimde" için çalışmıyor, ancak kodun tamamı değil.


İşlevlerin yavaş yürütülmesiyle ilgili kusurlar, kod iyileştiricinin çalışması:
( MT5(build 2390 tarafından düzeltildi )) ** ( yukarı ) Çalışma zamanı, ArrayResize kullanılarak diziye bir öğe eklerken, örneğin 7 kata kadar yapılar için belleğin önceden ayrılmış olmasına rağmen, büyük ek yük Yavaş.


Teklifler:
(yeni) - ME'ye mevcut Proje için arama/değiştirme ekle, aksi takdirde, yeniden düzenleme yaparken, dosyaların her birini gözden geçirin ve bir şekilde çok iyi olmayan bir giriş arayın.
link (yeni) - ME'de, derlerken, boş Dosya, Satır, Sütun sütunlarını, eklemenin yapıldığı kaynak dosya hakkında ilgili bilgilerle doldurun.
link - sınıflardaki statik yöntemler için intellisense çalışmasına dayalı ad alanı işlevselliği için intellisense desteğinin uygulanması hakkında.
link - değişmez değerleri ve geçici değişkenleri const ref işlev argümanları olarak iletme yeteneği sağlama hakkında.
bağlantı - "Proje" sekmesindeki proje dosyalarını taşırken, açık olan ve ME sekmelerinde bulunan dosyaları taşımak için konum yollarını otomatik olarak günceller.
link - MQL typedef bildirimine işlevsellik ekleme ihtiyacı hakkında.
bağlantı - varsayılan kopya oluşturucuların ve atama operatörlerinin oluşturulmasını zorlama yeteneği sağlama hakkında.

 
ME'de, derleme sırasında bağlı mqh'lerin yollarının görünmemesi, sadece isimlerin görünmesi üzücü.
 
"Siparişler ve Anlaşmalar" modunda işlem geçmişini görüntülerken, sütunlara göre sıralama yapmak mümkün değildir. Bu nedenle az önce yapılan bazı işlemler listenin sonunda değil, ortasında bitiyor.
 
fxsaber :

Basit bir örnek. Belirli periyotlara sahip bir dizi MAC'ye sahip olmanız gerekir.

Her Mashka aynı türden bir nesnedir. Açıkçası, Mashka benzersiz bir şekilde bir dönem tarafından belirlenir. Bu nedenle, onu const yapmak mantıklıdır.


ZY Diğer dillerde basitçe bir dizi işaretçi yapın. MQL'de böyle bir özgürlük yoktur.

mantıksız Değiştirmeyecekseniz, bu const yapmanız gerektiği anlamına gelmez. Değişkeni private yapmak yeterlidir.

Bunun sayesinde bir şey alsaydınız mantıklı olurdu. Ama sadece kendin için bir sorun yarattın.
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.04.21
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Sergey Dzyublik :

MQL optimizer ve derleyicinin nasıl çalıştığını biliyor musunuz?
Basit türlerdeki const alanlarının bu amaçlar için kullanılmadığı konusunda neden bu kadar güven var?

Optimize edicinin bununla hiçbir ilgisi yok.