Hatalar, hatalar, sorular - sayfa 1543

 
comp :

Örneğin, şimdi ObjectSetInteger açıklamasında

Ve olmalı

Konuları sonuna kadar okuyun

prop_id

[içinde] Nesne özelliği tanımlayıcısı. Değer, ENUM_OBJECT_PROPERTY_INTEGER numaralandırma değerlerinden biri olabilir.

Ben zaten söyledim. Belgeleri elinizde dama olmadan dikkatlice okuyun.
 
Slawa :

Konuları sonuna kadar okuyun

Ben zaten söyledim. Belgeleri elinizde dama olmadan dikkatlice okuyun.

ÇOK dikkatli ve sonuna kadar okuyun. Oradan kendi alıntı

Nesnenin özelliğinin kimliği. Değer , ENUM_OBJECT_PROPERTY_INTEGER numaralandırma değerlerinden biri olabilir .

Ama yapmalısın

Nesnenin özelliğinin kimliği. Değer, ENUM_OBJECT_PROPERTY_INTEGER numaralandırma değerlerinden biri OLMALIDIR .

Bu tür için açık bir döküm gereksinimi, beşte derlenen tek varyantı doğrular (kendiniz kontrol edin). Bu hayalet olmadan, derleyici karşılık gelen aşırı yüklemelerin olmamasından şikayet eder.

 
Bu numarayı bilmiyordum. Beşli meta düzenleyicide bir mq4 dosyası açarsanız, bu dosya ex4'te derlenecektir!
 
bir derleyici bir editör
 

Yani okumanın sonunda "Değer ENUM_OBJECT_PROPERTY_INTEGER numaralandırmasının değerlerinden biri olabilir. Ya da olmayabilir . Ve ne olmayabilir de belgelerde belirtmiyor, her şey demektir " diye düşündünüz. yasak olmayanlara izin verilir. Çünkü programlama için kamusal yaşamın ilkelerini yayıyoruz"

İlginç bir şekilde, MetaEditor bu işlev için parametreleri ayarlarken ilgili parametrenin türü hakkında size ne söyledi?

 
MQL yardımında birçok belirsizlik var. Bu nedenle, bu anlamda comp doğrudur - yardımı okumanın olası yorumları için ne kadar az seçenek olursa o kadar iyidir.
 
Slawa :

Yani okumanın sonunda "Değer ENUM_OBJECT_PROPERTY_INTEGER numaralandırmasının değerlerinden biri olabilir. Ya da olmayabilir . Ve ne olmayabilir de belgelerde belirtmiyor her şey demektir " diye düşündünüz. yasak olmayanlara izin verilir. Çünkü programlama için kamusal yaşamın ilkelerini yayıyoruz"

Hayır, öyle düşünmedim. Kod MT4 altında hatasız derleniyorsa MT5 altında hatasız derlenmesi gerektiğini düşündüm. Bu olmayınca kazmaya başladı. MT4 ve MT5 üzerindeki kodu kontrol edin ve emin olun.

 class CHARTOBJECT
{
public :
   template < typename T>
   void SetProperty( const int id, const T Value, const int Modifier = 0 ) const
  {
     const string sType = typename (T);

     if (sType == "double" )
      :: ObjectSetDouble ( 0 , "" , id, Modifier, ( double )Value);
     else if (sType == "string" )
      :: ObjectSetString ( 0 , "" , id, Modifier, ( string )Value);
     else
      :: ObjectSetInteger ( 0 , "" , id, Modifier, ( long )Value);

     return ;
  } 
  
   virtual void operator =( const string Value ) const
  {
     this .SetProperty( OBJPROP_TEXT , Value);

     return ;
  }
};

İlginç bir şekilde, MetaEditor bu işlev için parametreleri ayarlarken ilgili parametrenin türü hakkında size ne söyledi?

Şimdi baktım - doğru ve sadece yukarıda belirttiğim açıklama ile soruyor. Belgeler int diyor.

 
comp :

Hayır, öyle düşünmedim. Kod MT4 altında hatasız derleniyorsa MT5 altında hatasız derlenmesi gerektiğini düşündüm. Bu olmayınca kazmaya başladı. MT4 ve MT5 üzerindeki kodu kontrol edin ve emin olun.

Nedenmiş?

MT4 ve MT5 doğal olarak farklı mimariye sahiptir

MQL4'ü eski sözdiziminden yenisine (MQL4+ denir) çevirirken, numaralandırma da dahil olmak üzere pek çok şeyden yoksun olan eski MQL4 sözdizimine bakmak zorunda kaldık.

 

comp, hadi bir hafta boyunca sadece okumaya gönüllü olalım. Okur olun, yazar değil.

Burada bahsettiğiniz her şey sadece bu forumda değil, aynı zamanda MQL4.com forumunda da defalarca tartışıldı ve yeniden tartışıldı.

 
Slawa :

Nedenmiş?

MT4 ve MT5 doğal olarak farklı mimariye sahiptir

MQL4'ü eski sözdiziminden yenisine (MQL4+ denir) çevirirken, numaralandırma da dahil olmak üzere pek çok şeyden yoksun olan eski MQL4 sözdizimine bakmak zorunda kaldık.

Uzun süre ve başarısız bir şekilde tartışabilirsiniz. Gerçek şu ki, belgelerde int olmasaydı, ancak işlev adını yazarken ipucunda olduğu gibi, derleyicinin küfür etme nedenini hemen bulurdum (şablonlu örnekte bu açık değildi). Çünkü belgelere göre kodun derlenmesi gerekiyordu, çünkü orada int ve "may". Belgelerin ve araç ipuçlarının eşleşmesini neyin engellediğini bilmiyorum. Ancak gelecekte, yanlış anlamalar durumunda, belgelerin değil ipuçlarının ne gösterdiğini görmenin daha iyi olduğunu hatırlayacağım.
Neden: