Hatalar, hatalar, sorular - sayfa 2324

 

1. neden "uygulamalar" bölümü? 2 kelimeyle. Anlamıyorum.

2. hizmet masası bölümü nerede? Bu konuya birini göndermelerini istiyorum:

https://www.mql5.com/ru/forum/290284

Teşekkür ederim

 
Yine, "Ana Sayfa" düğmesine basıldığında olduğu gibi grafik kaymaları başladı - hiçbir model ortaya çıkmadı, yaklaşık yarım yıl boyunca hiçbir sorun yoktu ve şimdi 1940 yapımı geri döndü.
 
işaretçi hatası
 class A {};

void OnStart ()
{
  A* a = NULL ;
  
   if ( true && a) // '&&' - illegal operation use
    ;
    
   if (a) // OK
    ;
}
 
Vladimir Pastushak :

Bu normal işlev davranışı mı? Eğer öyleyse, zamanı nasıl azaltabilirsiniz? Geçmiş önceden yüklendi

Sonuç :

Sembol ARSA 16 544 647

Sembol AVAN 16 506 592

Sembol AVAZ 16 553 408

Sembol AVAZP 16 511 019

ASSB sembolü 16 521 310


Bu davranış, CFD'lerde ortaya çıkıyor


Herkesin Davranışı

İşte komut dosyası, fiyatlar için istek başına 16 saniye, şu anda program sıkıca kilitleniyor ...

 void OnStart ()
  {
   int      all_symbols = SymbolsTotal ( false );
   string   sym_name    = "";
   MqlRates    mas[];
   Print ("Symbols all ",all_symbols);
   ulong time_= GetMicrosecondCount ();
   
   for ( int i= 0 ;i<all_symbols;i++)
       if ((sym_name= SymbolName (i, false ))!="")
        {
         SymbolSelect (sym_name, true );
         ArrayResize (mas,i+ 1 , 100000 );

         time_= GetMicrosecondCount ();

         CopyRates (sym_name, PERIOD_D1 , 0 , 1 ,mas);

         Print ("Copy   N ",(i+ 1 )," Name ",sym_name," time = ",( GetMicrosecondCount ()-time_));

        }

   for ( int i= 0 ;i<all_symbols;i++)
       if ((sym_name= SymbolName (i, false ))!="")
        {
         SymbolSelect (sym_name, true );
         ArrayResize (mas,i+ 1 , 100000 );

         time_= GetMicrosecondCount ();

         double rez = iOpen (sym_name, PERIOD_D1 , 0 );

         Print (" iOpen    N ",(i+ 1 )," Name ",sym_name," time = ",( GetMicrosecondCount ()-time_));

        }
  }

Ve işte günlüğün bir parçası

DJ 0 12:18:33.507 TestKopya (EURUSD,H1) N 63 Ad SGDJPY zamanını kopyala = 46076

OP 0 12:18:33.552 TestKopya (EURUSD,H1) N 64 Adını Kopyala USDEUR_BASKET zaman = 44995

IG 0 12:18:33.597 TestKopya (EURUSD,H1) Kopyala N 65 İsim EURRUB_TOD saat = 44863

LI 0 12:18:33.642 TestKopya (EURUSD,H1) N 66 Adını kopyala EURRUB_TOM zamanı = 45040

GS 0 12:18:33.698 TestKopya (EURUSD,H1) N 67 Ad Kopyala USDRUB_TOD saat = 56006

CF 0 12:18:33.743 TestKopya (EURUSD,H1) N 68 Adını Kopyala USDRUB_TOM zamanı = 44925

CI 0 12:18:33.787 TestKopya (EURUSD,H1) N 69 Ad Kopyalama CNYRUB_TOD saat = 44820

ES 0 12:18:33.833 TestKopya (EURUSD,H1) N 70 Adını Kopyala CNYRUB_TOM zamanı = 45086

CF 0 12:18:50.336 TestCopy (EURUSD,H1) Copy N 71 Ad ABRD zamanı = 16503669

KL 0 12:19:06.836 TestCopy (EURUSD,H1) Copy N 72 Ad AESL zamanı = 16499892

FF 0 12:19:06.881 TestKopya (EURUSD,H1) Kopya N 73 Ad AFKS zamanı = 44842

CH 0 12:19:06.926 TestKopya (EURUSD,H1) Kopyala N 74 Ad AFLT zamanı = 44963

DP 0 12:19:23.429 TestCopy (EURUSD,H1) Copy N 75 Ad AKRN zamanı = 16502943

CG 0 12:19:39.929 TestCopy (EURUSD,H1) Copy N 76 Ad ALBK zamanı = 16499755

RL 0 12:19:56.433 TestCopy (EURUSD,H1) Copy N 77 Ad ALNU zamanı = 16503651

EG 0 12:19:56.478 TestCopy (EURUSD,H1) Copy N 78 Ad ALRS zamanı = 44989

OK 0 12:20:12.978 TestKopya (EURUSD,H1) Kopyala N 79 Ad AMEZ zamanı = 16500788

QS 0 12:20:13.034 TestCopy (EURUSD,H1) Copy N 80 Ad APTK zamanı = 55954

GF 0 12:20:29.541 TestKopya (EURUSD,H1) Kopyala N 81 Ad ARMD süresi = 16506946

HM 0 12:20:46.051 TestCopy (EURUSD,H1) Copy N 82 Ad ARSA zamanı = 16509620

DD 0 12:21:02.553 TestKopya (EURUSD,H1) Kopya N 83 Ad ASSB zamanı = 16501809

GK 0 12:21:19.083 TestKopya (EURUSD,H1) Kopya N 84 Ad AVAN zamanı = 16529765

HP 0 12:21:35.586 TestKopya (EURUSD,H1) Kopya N 85 Ad AVAZ zamanı = 16502812

HK 0 12:21:52.085 TestCopy (EURUSD,H1) Copy N 86 Ad AVAZP zamanı = 16499796

NO 0 12:21:52.130 TestKopya (EURUSD,H1) Kopya N 87 Ad BANE süresi = 44973


Aşağıdaki tam günlük.

Dosyalar:
20181120.log  196 kb
 
fxsaber :
işaretçi hatası

Ve bunun farkı ne?

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2018.09.17 14:17

Bu bir hata mı?
 class A {};

A* a = NULL ;

bool b1 = a && true ; // OK
bool b2 = true && a; // '&&' - illegal operation use

 
A100 :

Ve bundan ne farkı var?

Çok kötü bir hafızam var. Birkaç kez icat ettiğim bazı "bisikletler".

 
Böyle bir hatanın sebepsiz olmadığını düşünüyorum, çünkü (bool için bir işaretçinin ücretsiz örtük dökümü olacaksa) nasıl yorumlanacağı açık değil
 class A {
public :
         bool operator &&( bool a ) { return a; }
};
void OnStart ()
{
        A *a, *b;
         if (a && b);
}

veya nasıl

         if (( bool )a &&( bool )b);       //(1)

veya nasıl

         if ((*a). operator &&(( bool )b));//(2)
 
A100 :
Böyle bir hatanın sebepsiz olmadığını düşünüyorum, çünkü (bool için bir işaretçinin ücretsiz örtük dökümü olacaksa) nasıl yorumlanacağı açık değil

Evet, durumunuzda bir belirsizlik var. İyi bir şekilde, bunun için en azından bir derleyici uyarısı olmalıdır.

Benim çok daha basit durumumda, her şey açık. Bence C++ da buna katılıyor.

 

fxsaber :
Это баг?

 class A {};

A* a = NULL ;

bool b1 = a && true ; // OK
bool b2 = true && a; // '&&' - illegal operation use

Geçici bir çözüm olarak '!' operatörünü kullanın. (mantıksal değil)

 class A {};

A* a = NULL ;

bool b1 = !!a && true ;
bool b2 = true && !!a;


Bir çözüm düşüneceğiz (bir sürü kod olduğu için artık davranışı değiştirmek mümkün mü?)
Bir işaretçi için, bool'a yapılan dökümün, işaret ettiği nesne üzerinde değil, işaretçi üzerinde bir işlem olması mümkündür.

Bu durumda bir nesne üzerinde işlem yapabilmek için kodu şu şekilde yazmak gerekecektir.

 class A {};

A* a = NULL ;

bool b1 = *a && true ;
bool b2 = true && *a;

Cast operatörleri de eklemek istiyoruz, ancak bu görev (çok) düşük öncelikli
 
Ilyas :

Geçici bir çözüm olarak '!' operatörünü kullanın. (mantıksal değil)

Derleyici çift olumsuzlamayı optimize ediyor mu?

Neden: