Hatalar, hatalar, sorular - sayfa 714

 
victorg :

Bir makro ve bir satır içi işlev gerçekten farklı şeylerdir. Ama bundan bahsetmiyorum. İşte derleme zamanında argümanların değerlerinin bilinmediği bir örnek

İlk durumda, kod mevcut fonksiyona (muhtemelen) eklenmelidir ve ikinci durumda, fonksiyon, yığından geçen parametrelerle (muhtemelen) çağrılmalıdır. Ancak optimize etmek için, derleyici ikinci seçeneği ikame yoluyla uygulayabilir. öyle mi? Bilmiyorum. Bu yüzden sordum.

İşkence görmesi gereken Metaalıntılardır. Ama benim fikrim sizinkiyle aynı (optimizasyon nedeniyle sonuç farklı olabilir).
 

Elips nesnesi, yalnızca bağlantı noktalarına tıklarsanız fare ile seçilecektir.

Bu bir hata veya özellik mi? Çok uygunsuz uygulama.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов - Документация по MQL5
 
Dikey ölçek, manuel olarak ayarlanırsa, yeniden başlatmalarda hatırlanmaz. Ayrıca hoş olmayan küçük şeylerden.
 
MetaDriver :

Это что, юмор такой чёрный?

1.  Извини, - бред.  Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать".  Никакой опасности не вижу в упор. Смотрел внимательно, если чё.  Любое имя, в конечном счёте есть ссылка.  Индексация есть обычное расширение понятия имени. Не более.  Давай запретим присваивание вообще.  В целях безопасности.  Ссылки же крайне опасны так?

2.  Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева.  Причём здравому смыслу и моему духу это почему-то не противоречит.

Индексаторы делаются для связи с внешней средой.  Их функция именно интерфейсная.  Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить?  Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value);  Заодно и в читабельности выиграем. Да и отладка станет куда проще.  Мля. Уф..

3.  А как насчёт того, чтоб сделать нормальный индексатор?  Горничная это конечно классно, но королева всё-таки лучше.

4.  Вот в этом месте у меня крыша конкретно начала ехать.  Это что, нечитабельно??

Вот это читабельнее, да?

  t.setDataElement(i, i*i);

Круто.  Пожалуй пойду лечиться.

5.  Ваще круто.

6. Я плакаль.


e(dizi, i, j, değer); Aynı zamanda okunabilirlik konusunda da kazanacağız. Evet ve hata ayıklama çok daha kolay olacak. Falan. ah..

Bir pasörün avantajı, aptal bir denklemden daha fazlasını yapabilmenizdir.

Örneğin, günlüğe bilgi yazabilir, verileri dönüştürebilir (dizelerden veya daha karmaşık verilerden bahsediyorsak), bazı önemli olaylar meydana geldiğinde (güncelleme verileri gibi) diğer nesnelere mesaj göndermeyi yönetebilirsiniz.

Nesneniz tarihin değiştiğini nasıl biliyor? Görünüşe göre orada alıntılar depolayacaksın ..
Evet, bu yanlış bir problem çünkü nesneniz daha çok bir yapıya benziyor ve gerçekten hiçbir şeyi kontrol etmiyor.
Her şey, her şeyi yapan başka bir sınıf çöp kutusunda yapılır, hatta (daha kötüsü) her şey onStart(), onTick(), ...'da olur! :)

İyi günler

 
MetaDriver :

3. Normal bir indeksleyici yapmaya ne dersiniz? Hizmetçi kesinlikle havalı ama kraliçe daha da iyi.

Contayı kes. Doğru, normal bir değerle karşılaştırıldığında, yürütme süresi açısından çok daha pahalı olacaktır. Ama istediğin gibi görünecek.

______

Ah, lanet iki. O zaman, döküm operatörünün aşırı yüklenmesine ihtiyacınız var. Pichalka.

 
speedy :

Bir pasörün avantajı, aptal bir denklemden daha fazlasını yapabilmenizdir.

Örneğin, günlüğe bilgi yazabilir, verileri dönüştürebilir (dizelerden veya daha karmaşık verilerden bahsediyorsak), bazı önemli olaylar meydana geldiğinde (güncelleme verileri gibi) diğer nesnelere mesaj göndermeyi yönetebilirsiniz.

Nesneniz tarihin değiştiğini nasıl biliyor? Görünüşe göre orada alıntılar depolayacaksın ..
Evet, bu yanlış bir problem çünkü nesneniz daha çok bir yapı yapısına benziyor ve gerçekten hiçbir şeyi kontrol etmiyor.
Her şey, her şeyi yapan başka bir sınıf çöp kutusunda yapılır, hatta (daha kötüsü) her şey onStart(), onTick(), ...'da olur! :)

İyi günler

İşin püf noktası, indeksleyicinin yetenekler açısından ayarlayıcıdan farklı olmamasıdır . Yalnızca çok daha uygun sözdizimi. İçeriği herhangi bir şey olabilen (en basit tipik durum, bir dizinin sınırlarını kontrol etmek ve diğer hataları çözmektir) bir işlevle aynı şekilde uygulanır ve bir dizi öğesine bir başvuru döndürmeye gelmez. hiç.

Sana da iyi günler.

(Dünkü ses tonu için üzgünüm. Biraz gergindim - işte sıkıntılar. Bununla hiçbir ilginiz yok. Belki de kategorik olarak fazla ileri gittiniz :)

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
TheXpert :

Contayı kes. Doğru, normal bir değerle karşılaştırıldığında, yürütme süresi açısından çok daha pahalı olacaktır. Ama istediğin gibi görünecek.

______

Ah, lanet iki. O zaman, döküm operatörünün aşırı yüklenmesine ihtiyacınız var. Pihalka.

Aslında, yapacaklarını düşünüyorum. Dildeki referansların dönüşü ile bariz bir kusur var.

Referans değişkenleri yapmak gerekli değildir, ancak fonksiyonlardan l-değeri döndürmek kutsaldır.. :)

Bunun temelde çözülemez olduğunu düşünmüyorum - dilde sıradan mql dizileri var ve atama operatörünün her iki tarafında da harika hissediyorlar. Ancak bunlar, uygulamaya göre C++ sınıflarıdır!

İşte aynı seriden başka bir örnek. Bu kod derlenir ancak çalışmaz.

 #define _MyContainer(name,type,size)  struct name { public: type array[size]; type At(int i) {return array[i];} }
#define  ASize 8
#define  BSize 4

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   _MyContainer(MyClass, int , ASize);
   MyClass MyVar;
   Print ( sizeof (MyVar)); 
   for ( int i= 0 ;i<ASize;i++)
     {
      MyVar.array[i]=i*i;
     }
   for ( int i= 0 ;i<ASize;i++)
     {
       Print (MyVar.At(i));
     }
   _MyContainer(My2DBag, MyClass, BSize);
   My2DBag MyVar2D;
   for ( int i= 0 ;i<BSize;i++)
     {
       for ( int j= 0 ;j<ASize;j++) MyVar2D.array[i].array[j]=(i+ 1 )*(j+ 1 );
     }
   for ( int i= 0 ;i<BSize;i++)
     {
       for ( int j= 0 ;j<ASize;j++) Print (MyVar2D. At(i).At(j));
// Run-time ERROR:  DefTest (USDJPY,M30)  invalid pointer access in 'DefTest.mq5' (38,46)

//      for(int j=0;j<ASize;j++) Print(MyVar2D.array[i].At(j));
     }
  }

Derlememesi gerektiğini söylemiyorum. Yani çalışmak zorundayım.. :)

 
MetaDriver :

...
Derlememesi gerektiğini söylemiyorum. çalışmam lazım.. :)

Evet haklısınız derleyici hatası, düzelteceğiz.
 

MQL5 , Diğer sabitler grubuna ait harika bir IS_DEBUG_MODE sabitine sahiptir. Test cihazı için benzer bir sabit eklemek mümkün müdür? IS_TESTER_MODE gibi bir şey...

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы - Документация по MQL5
 
denkir :

MQL5 , Diğer sabitler grubuna ait harika bir IS_DEBUG_MODE sabitine sahiptir. Test cihazı için benzer bir sabit eklemek mümkün müdür? IS_TESTER_MODE gibi bir şey...

Ancak bu sabitler çalışmayacak mı?

ENUM_MQL5_INFO_INTEGER

tanımlayıcı

Tanım

Emlak Tipi

MQL5_PROGRAM_TYPE

mql5 programının türü

ENUM_PROGRAM_TYPE

MQL5_DLLS_ALLOWED

Belirli bir çalışan program için DLL kullanma izni

bool

MQL5_TRADE_ALLOWED

Bu çalışan program için ticaret izni

bool

MQL5_DEBUGGING

Hata ayıklama modunda çalışan programın işareti

bool

MQL5_TESTING

Test cihazında çalışan programın işareti

bool

MQL5_OPTIMIZASYON

Optimizasyon sürecinde çalışan programın işareti

bool

MQL5_VISUAL_MODE

Görsel test modunda çalışan programın işareti

bool