Fehler, Irrtümer, Fragen - Seite 1876

 
Kompilierungsfehler
struct STRUCT
{
  long l;
  
  STRUCT( void )
  {
  }
};

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

1. Wann wird es eine Beschreibung der Gewerkschaft in der Dokumentation geben?

2) Ist sie ein Ersatz für einfache Strukturen?

Wird die Konvertierung des Unionstyps unterstützt, wie in der Dokumentation für Strukturen beschrieben?

 

Hier sehen Sie, wie Sie union verwenden können, um eine Struktur in ein char-Array zu kopieren:

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;
}

Sie können also versuchen, das Problem hier zu beheben. In der Tat, alles, was in_space kopiert wurde, um_un_space, die Hauptsache über die Ausrichtung der Strukturen nicht über die Größe des Array-Puffers zu vergessen, obwohl ich die Lage der Felder in der Struktur geändert und die Daten sind immer noch richtig kopiert, aber es ist besser, um die Ausrichtung der Strukturen bleiben. Es ist eine Krücke, aber wenigstens ist es so ))

 
Alexey Viktorov:

Warum wird das Array zweimal auf Null gesetzt?

)) vergessen zu entfernen, nur initialisieren und das war's, bereits korrigiert ))
 
MetaEditor stürzt bei F7 ab
union UNION
{
  uchar Bytes[sizeof(MqlTick)];
  MqlTick Tick;
};

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

höchstwahrscheinlich, weil die Größe des Arrays als Konstante deklariert werden muss, zumal sich die Größe von MqlTick offensichtlich nicht ändern wird ))
Ein Array wird als Konstante deklariert. Editor crash.
 
fxsaber:
MetaEditor stürzt bei F7 ab

derselbe Song, höchstwahrscheinlich aufgrund des Kopierens von a = b; ohne dies ist alles in Ordnung
 
fxsaber:
Array und wird als Konstante deklariert. Editor crash.

hatte keine Zeit, sie zu löschen ))
 
Können Sie mir sagen, ob es Pläne gibt, der Gewerkschaft die Verwendung einer Vorlage hinzuzufügen, damit man dies tun kann?
template<typename T>
union structToBytes
{
  uchar bytes[sizeof(T)];
  T data;
};
 

Wie lange dauert es, den Cache des Testagenten in MT5 zu löschen?

Aber in meinem Fall stellt sich heraus, so - ich optimiert, dann führe ich den Test auf realen Ticks und in diesem Fall der Cache für 6 GB erstellt wird. Wenn ich das Datum der Prüfung ändern, wird der Cache freigegeben.

Aber hier habe ich einen Cache, der in 5 Minuten überschrieben wird - ist das normal? Wenn Sie den Test nicht neu starten, d.h. vom Computer weggehen, zurückkommen, und er schreibt Ihnen wieder hier und da 6GB, reicht die Festplatte nicht aus, wird gelöscht.

Ist es nicht logischer, den Cache zu löschen, wenn Sie das Testdatum oder den Berater ändern oder wenn Sie das Terminal entladen?