Hatalar, hatalar, sorular - sayfa 2745

 
fxsaber :

Optimizasyon sorusu. Test Cihazında, her onayda , daha fazla çalışma için bir onay almanız gerekir. ben böyle yapıyorum

Bu seçeneğin daha yavaş olacağı açıktır:

Ancak SymbolInfoTick de yavaşlar çünkü string parametresi referansla iletilmez.

Dizenin referans olarak iletildiği yerlerde standart SymbolInfo* aşırı yüklemelerine sahip olmak mümkün müdür?

olması daha iyi tabi

Optimize Edici'de bu işlevler on milyarlarca kez çağrılır.

Symbol() işlevinin çağrılması HER ZAMAN, Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason() gibi global _Symbol değişkenine erişmek için genişler.

 
Ilyas :

Symbol() işlevinin çağrılması HER ZAMAN, Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason() gibi global _Symbol değişkenine erişmek için genişler.

Bir dizeyi referans olarak iletmeye ne dersiniz?

 
fxsaber :

Bir dizeyi referans olarak iletmeye ne dersiniz?

Görünüşe göre, neden MQL'deki çözülemeyen sorunlardan biri - const ref ile bir değişmezi parametre olarak geçirmek.

 
fxsaber :

Dizenin referans olarak iletildiği yerlerde standart SymbolInfo* aşırı yüklemelerine sahip olmak mümkün müdür?

Nasıl yardımcı olacaklar?

 int SymbolInfoTick( string   symbol ) { return 1 ; }
int SymbolInfoTick( string & symbol ) { return 2 ; }
void OnStart ()
{
         Print ( SymbolInfoTick( _Symbol ));
}

Hala 2 değil 1 döndürür (denir)

 
fxsaber :

Bir dizeyi referans olarak iletmeye ne dersiniz?

Dize referansla iletilir.

Uzun zaman önce "copy_on_write satırları"na geçtik -> bir satırı diğerine kopyalarken içerik hemen kopyalanmıyor (önceki gibi), satır arabelleğine bağlantı sayısı artıyor
Örneğin, bir dize parametre olarak değere göre geçirildiğinde referans sayısı artar ve çağrıdan sonra azalır.

Bir dize değiştiğinde, tampon referans sayısı kontrol edilir ve birden fazla referans varsa, değiştirilen dize eski tampondan "çıkarılır" ve ona yeni bir tane tahsis edilir.

 
A100 :

Nasıl yardımcı olacaklar?

Hala 2 değil 1 döndürür (denir)

değişken _Symbol sabiti
 
Ilyas :
değişken _Symbol sabiti

O zaman aşırı yüklenme yardımcı olmaz.

 int SymbolInfoTick (       string   ) { return 1 ; }
int SymbolInfoTick ( const string & ) { return 2 ; }
void OnStart ()
{
         Print ( SymbolInfoTick ( _Symbol )); //Error
}

derleme hatası olacak

 
Ilyas :

Dize referansla iletilir.

Uzun zaman önce "copy_on_write satırları"na geçtik -> bir satırı diğerine kopyalarken içerik hemen kopyalanmıyor (önceki gibi), satır arabelleğine bağlantı sayısı artıyor
Örneğin, bir dize parametre olarak değere göre geçirildiğinde referans sayısı artar ve çağrıdan sonra azalır.

Bir dize değiştiğinde, tampon referans sayısı kontrol edilir ve birden fazla referans varsa, değiştirilen dize eski tampondan "çıkarılır" ve ona yeni bir tane tahsis edilir.

Her şey derleme düzeyinde belirlenir mi?

 

Derleyici hatası:

 class CArray
{  
};

int ArraySize ( const CArray&);


void Main()
{
  CArray arr;
   ArraySize (arr);   // Нормально
  
  CArray arrays[ 1 ];
   ArraySize (arrays[ 0 ]); // 'arrays' - array required
}
 
fxsaber :

Her şey derleme düzeyinde belirlenir mi?

Numara. Derleme zamanında, bu henüz bilinmiyor.