Hatalar, hatalar, sorular - sayfa 712

 
Merhaba,

Cevabınız için teşekkürler, beyan sorununun çözülmesine yardımcı olur.

Bu arada, hata ayıklamayla ilgili belki bir hata buldum:

Bir göstergede hata ayıklarken, kesme noktası durdurma modundayken MetaTrader'daki gösterge listesine basın.
Uygulama donuyor ve yalnızca görev yöneticisi tarafından durduruluyor (öldürme)


Lütfen Not al.
 
speedy :


Lütfen Not al.
Kabul edildi, teşekkürler.
 

Strateji test cihazındaki OnTimer() işlevi , her saniye istendiğinde yürütmeyi oldukça yavaşlatır. geçersiz OnInit() { EventKillTimer(); EventSetTimer(1); } void OnTimer() { } Expert Advisor, iki harici göstergeye sahip ve tüm tikler üzerinden geçerek 2012.04.11 14:32:07 Core 1 EURUSD,H1: 8083516 tik (4557 bar) üzerinde 70418 ms (toplam çubuklar geçmişte 6270, toplam süre 70528 ms) OnTimer() işlevi yorumlanırken, yürütme önemli ölçüde hızlandırılır 22870 ms) Bu tür gecikmeler, test cihazının özelliklerinden dolayı mı meydana geliyor, yoksa yürütmeyi bir şekilde hızlandırmak mümkün mü?

PS Önizleme mesajın uygulanacağı chtol(

 
sion :

Strateji test cihazındaki OnTimer() işlevi , her saniye istendiğinde yürütmeyi oldukça yavaşlatır. geçersiz OnInit() { EventKillTimer(); EventSetTimer(1); } void OnTimer() { } Expert Advisor, iki harici göstergeye sahip ve tüm tikler üzerinden geçerek 2012.04.11 14:32:07 Core 1 EURUSD,H1: 8083516 tik (4557 bar) üzerinde 70418 ms (toplam çubuklar geçmişte 6270, toplam süre 70528 ms) OnTimer() işlevi yorumlanırken, yürütme önemli ölçüde hızlandırılır 22870 ms) Bu tür gecikmeler, test cihazının özelliklerinden dolayı mı meydana geliyor, yoksa yürütmeyi bir şekilde hızlandırmak mümkün mü?

PS Önizleme mesajın uygulanacağı chtol(

Kodu editör panelindeki "SRC" düğmesinden eklemek daha iyidir.
 
papaklass :

Test cihazındaki bu giriş ne anlama geliyor?

Bu, takas geçmişiyle ilgili bir sistem mesajıdır.
 

Komik değil.

 struct Test
  {
   double       data[];
   int          size;
   void         Init( int Size) {size=Size; ArrayResize (data, fmin (size,Max));}
   double &operator[] ( int i) { return &data[i];} // ERROR :  '&' - reference cannot be used

private :
   static int   Max;
  };
//+------------------------------------------------------------------+

int Test::Max= 1024 ;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   Test t;  
   t.Init( 16 );
   for ( int i= 0 ;i<t.size;i++)
     {
      t[i]=i*i; // ERROR : '=' - l-value required
     }
  }

mql5'teki genel durumdaki referansların işlevlerden döndürülmediğini anlıyorum (bu arada, neden olmasın?), ancak bunun yerine l-değeri indeksleyicilerinin mümkün olması için bir şeyler yapılması gerekiyor. Örneğin, özellikle sol dizin oluşturucular için genel kuraldan sözdizimsel bir istisna yapmak için. Veya bazı anahtar kelimeler.

Topallık açıkça mql5'i boyamaz....

 
MetaDriver :

Topallık açıkça mql5'i boyamaz....

Mql5'i gücendirmeyin, hala "küçük", ancak yapıdan yapıya çok çabuk olgunlaşıyor.
 
MetaDriver :

Topallık açıkça mql5 boyamaz....

Yani bunun için tam teşekküllü bağlantıları karıştırmanız gerekiyor :)

not: akıcı :)

 

Böcek?


Aşağıdaki kod, derleyicide sonsuz bir döngü gibi bir şey oluşturur. İptal'e tıklayarak (derlemeyi iptal edin)

hemen çalışmaz, ancak çalıştığında editör üzerindeki kontrolü geri verir.

Aynı zamanda, İptal düğmesinin kendisi kaybolmaz, ancak kullanılabilir de kalmaz.

Derleme düğmesi sonsuza kadar kayboldu (geri dönmek için düzenleyiciyi yeniden başlatmanız gerekir)


#include <Object.mqh>

B sınıfı;

A sınıfı: B {
geçersiz a();
};

B sınıfı: A {

CNesne* a;
geçersiz b();
   
};
 
MetaDriver :

Komik değil.

mql5'teki genel durumdaki referansların işlevlerden döndürülmediğini anlıyorum (bu arada, neden olmasın?), ancak bunun yerine l-değeri indeksleyicilerinin mümkün olması için bir şeyler yapılması gerekiyor. Örneğin, özellikle sol dizin oluşturucular için genel kuraldan sözdizimsel bir istisna yapmak için. Veya bazı anahtar kelimeler.

Topallık açıkça mql5'i boyamaz....

Sınıfın temel olmayan dahili öğelerini dışarıya "üretmek" güvenli değildir (ve bu örnekte, özniteliğin kendisini değil, yalnızca dizi öğesini !) Özellikle değerini değiştirme yeteneği ile - güvenli değildir .

Ek olarak, bu, nesne yönelimli programlamanın "ruhu" ile çelişir: nesnenin verileriyle yapılan tüm çalışmalar, kendi yöntemlerini kullanarak nesnenin içinde yapılmalıdır.


Veri özelliği için sadece bir Setter kullanmaya ne dersiniz?

Kod yalnızca okunabilirlikten yararlanacaktır. Nihayetinde, l-değeri indeksleyici ile bu "basitlik", siz dahil hiç kimsenin bu kodun nasıl çalıştığını anlamamasını sağlayacaktır..

Bir Setter yazmaktan daha fazla hata bulmaya zaman ayırın.

Misal:

while ( (double)date[++i -1] < 10) gibi bir kod daha uzun ama sindirilebilir bir şeyle değiştirilebilirse, bu şekilde yapmak daha iyidir..

yapı testi

{

çiftveri[];

intsize;

void Init(int Size) {size=Size; ArrayResize(veri,fmin(boyut,Maks));}

void setDataElement(int indeksi, çift değer)

{

veri[indeks] = değer;

}


özel:

statik int Maks;

};

//+------------------------------------------- --------------------+


int Test::Maks=1024;

//+------------------------------------------- --------------------+

//| Komut dosyası programı başlatma işlevi |

//+------------------------------------------- --------------------+

OnStart() geçersiz

{

test t;

t.Init(16);

for(int i=0;i<t.size;i++)

{

//t[i]=i*i; // HATA :'=' - l değeri gerekli

t.setDataElement(i, ben*i);

}

}