Hatalar, hatalar, sorular - sayfa 1876

 
Derleme Hatası
 struct STRUCT
{
   long l;
  
  STRUCT( void )
  {
  }
};

union UNION
{
  STRUCT Value; // 'STRUCT' has constructor and cannot be used as union member
};
 

1. Sendika tanımı ne zaman belgelerde yer alacak?

2. Basit yapıların yerini alıyor mu?

3. Birlik , dökümantasyondaki yapılar için açıklandığı gibi tip dökümü destekleyecek mi?

 

union kullanarak bir yapıyı char dizisine şu şekilde kopyalayabilirsiniz:

 struct DATA
  {
   int       var1;
   uint      var2;
   float     var3;
   double    var4;
  };

union NAME_BIT
  {
   char   buff[ 20 ];
   DATA  data;
   NAME_BIT() {
       ArrayInitialize (buff, 0 );
   }
  };

int OnInit () {
   NAME_BIT _space, _un_space;
   _space.data.var1 = 100 ;
   _space.data.var2 = 78 ;
   _space.data.var3 = 1.999 f;
   _space.data.var4 = . 0357 ;
   
   ArrayCopy (_un_space.buff, _space.buff);
   
//---
   return INIT_SUCCEEDED ;
}

böylece sorunu burada çözmeyi deneyebilirsiniz. Aslında, _space içindeki her şey _un_space 'a kopyalandı, yapıların hizalanmasıyla ilgili ana şey, arabellek dizisinin boyutunu unutmamak, bir nedenden dolayı yapıdaki alanların yerini değiştirdim ve veriler yine de normal şekilde kopyalanır, ancak yapıların hizasına bağlı kalmak daha iyidir. Koltuk değneği ama en azından öyle))

 
Alexey Viktorov :

Dizi neden iki kez sıfırlanıyor?

)) Kaldırmayı unuttum, başlatmam yeterli ve bu kadar, zaten düzelttim))
 
F7 MetaEditor çökmesi
union UNION
{
   uchar Bytes[ sizeof ( MqlTick )];
   MqlTick Tick;
};

void OnStart ()
{
  UNION a, b;
   
  a = b;
}
 
Konstantin :

büyük olasılıkla, özellikle MqlTick'in boyutu açıkça değişmeyeceğinden, dizinin boyutunun sabit olarak bildirilmesi gerektiğinden dolayı ))
Bir dizi ve sabit olarak bildirilir. Editörün çökmesi.
 
fxsaber :
F7 MetaEditor çökmesi

aynı şarkı, büyük olasılıkla a = b'nin kopyalanması nedeniyle; o olmadan her şey yolunda
 
fxsaber :
Bir dizi ve sabit olarak bildirilir. Editörün çökmesi.

silmeyi başaramadı))
 
Söyleyin lütfen, şablon kullanımını birliğe eklemek planlanıyor mu, böylece şöyle olabilir:
 template < typename T>
union structToBytes
{
   uchar bytes[ sizeof (T)];
  T data;
};
 

MT5'te test aracısının önbelleğini temizleme zamanı nedir?

aksi halde benim için böyle çıkıyor - optimize ettim, çalıştırmayı gerçek kenelerle başlatıyorsunuz, bu durumda 6GB önbellek oluşturuyorum. test tarihi değiştiğinde, önbellek serbest bırakılır. Bu anlaşılabilir bir durum, veriler yeniden senkronize edilecek.

ama şimdi 5 dakika içinde önbelleğimin üzerine yazılıyor - bu normal mi? çalıştırmayı yeniden başlatmazsanız, yani. bilgisayardan ayrıldı, döndü ve yine size 6GB yazıyor, bu sabit disk yeterli değil, silinecek.

Test tarihini değiştirirken, danışman veya terminali boşaltırken önbelleği temizlemek daha mantıklı değil mi? Neden zamanında bağlantı kurmanız gerekiyor?