Fehler, Irrtümer, Fragen - Seite 2472

 

Ich erstelle ein benutzerdefiniertes Symbol und fülle es mit täglichen Balken aus 25 Jahren, das sollte etwa 400kb wiegen. Im Symbolordner werden jedoch .hcc-Dateien mit einer Gesamtgröße von 15 mb erstellt! Außerdem dauert das Ganze etwa 20 Sekunden! Das ist unmöglich... Wie können Sie sich das erklären?

 
Sergey Dzyublik:

Ich war überrascht, dass es möglich war, typedef mit einem Zeiger auf eine Vorlagenfunktion zu deklarieren.
Die Freude währte jedoch nicht lange.

Genau das habe ich gemeint
 

In letzter Zeit wurden Dutzende von "Funktionen" und Fehlern im MT gemeldet.
Woher wissen wir, ob es sich lohnt zu warten, bis sie repariert sind oder nicht?
Bitte schlagen Sie nicht vor, jedes Mal, wenn ein neuer Build veröffentlicht wird, alles zu testen.

#(nicht behoben in MT5(build 2057)) "Strategy Tester: 2 Durchläufe geplant, aber in der Praxis unendliche Anzahl von Durchläufen > 900pc aufgrund eines "OnInit critical error" Fehlers".
#(nicht behoben in MT5(build 2057))"Ungültiger Wert des Feldes array size im Standard-Zuweisungsoperator für Strukturen mit dynamischen Arrays".
#(nicht behoben in MT5(build 2057)) Der Compiler sieht den Standard-Kopierkonstruktor für die Klasse nicht, wenn ein Klassenobjekt als Wert aus einer Funktion zurückgegeben wird".
(nicht behoben in MT5(build 2057))"Kompilierfehler beim Typ-Cast "an sich" für Musterklassen und "komplexe" Strukturen".
(nicht behoben in MT5(build 2057))"Bei der Arbeit mit typedef wird bei der Verwendung einer Vorlagenfunktion mit expliziter Spezialisierung kein Code für diese Vorlagenfunktion erzeugt".
(nicht behoben in MT5(build 2057))"Kompilierungsfehler bei der Wiederverwendung derselben Funktionssignatur innerhalb von typedef".
#
(nicht behoben in MT5(build 2057))"Ein großer Teil der Funktionen für die String-Verarbeitung funktioniert nicht mit NULL-Zeichen in einem String (zum Beispiel: ShortArrayToString, StringInit, StringFill)".
#(nicht behoben in MT5(build 2057)) Die Funktion StringSetLength funktioniert nur, um die Stringlänge zu "trimmen", nicht um sie zu erhöhen.
(behoben in MT5(build 2057))"Strategy Tester: 750 "metatester64.exe" Prozesselaufen".
#
"Forum www.mql5.com, wenn eine Nachricht mit einem Bild bearbeitet wird, wird das vorherige Bild nicht durch das neue ersetzt".


Vorschläge:
# Erlaubt dem Benutzer, die Codegenerierung/Löschung für den Standard-Zuweisungsoperator (Kopierkonstruktor) zu erzwingen".
"Erlaubt ArrayCopy das Kopieren von Klassen und "komplexen" Strukturen, ähnlich wie Strukturen tiefe Kopierfunktionen für jeden Objekttyp bieten".
"Bereitstellung von Funktionen für den Benutzer zum Lesen/Setzen vonKapazitätswerten bei der Arbeit mit dynamischen Arrays".

# Änderungen zur Verbesserung der Infografik des Signaldienstes"

 
A100:
Genau das habe ich gemeint.

Schablonentypedef und die Verwendung von Typedef in einer Schablonenklasse sind zwei verschiedene Dinge.
Die zweite Option funktioniert, aber es gibt ein Problem mit Namespace-Überschneidungen bei der Wiederverwendung einer Vorlagenklasse mit einem anderen Typ.

 
Alexey Navoykov:

Ich erstelle ein benutzerdefiniertes Symbol und fülle es mit täglichen Balken aus 25 Jahren, das sollte etwa 400kb wiegen. Der Symbolordner erstellt jedoch .hcc-Dateien mit einer Gesamtgröße von 15 mb! Und obendrein dauert das Ganze etwa 20 Sekunden! Außer Frage... Wie lässt sich das erklären?

Schauen Sie sich an, was aufgezeichnet wurde.

 
fxsaber:

Sehen Sie sich an, was aufgezeichnet wurde.

Nun, ich kenne das hcc-Format nicht, also kann ich nicht überprüfen, was in der Datei steht. Aber im Terminal zeigt es tägliche Balken an. Wenn ich zu einem kleineren Zeitrahmen wechsle, sehe ich dieselben Balken. Anscheinend speichert es anfangs auch ALLE Zeitrahmen in der Datei, also... Ich dachte, es werden nur Minutenbalken gespeichert, aus denen dann alle anderen Zeitrahmen synthetisiert werden. Und die Anzahl der Minutenbalken deckt sich, wie gesagt, mit den Tagesbalken, d.h. es gibt insgesamt etwa 7000 Minutenbalken.

Ich kann mir daher vorstellen, dass er 7000*M1, 7000*M2, 7000*M3 usw. bis zu 7000*D1 in einer Datei speichert. Wenn das so ist, wird er wahrscheinlich insgesamt 15 MB abrufen. Korrektur: ca. 5 Sekunden(20 - bei Aktualisierung des bestehenden Verlaufs).

 

Auf der Forumsseite ist etwas kaputt: Ich kann meine letzten Beiträge nicht sehen.
Zum Beispiel fehlendies und dies in"Alle Beiträge".
Und wie es scheint, lag die Bewertung bis vor ein paar Monaten bei über 6000. Vielleicht sinkt die Bewertung im Laufe der Zeit aufgrund geringerer Aktivität.

 
class A{
public:
   struct AA{
      uchar data[8];
   };
   static AA obj;
};

AA A::obj = {0};     // OK


template<typename T>
class B{
public:
   struct BB{
      T data[8];
   };
   static BB obj;
};

template<typename T>
BB B::obj = {0};       //'BB' - declaration without type    




void OnStart(){  
   ArrayPrint(A::obj.data);
   //ArrayPrint(BB<int>::obj.data);
}


Es ist derzeit nicht möglich, eine statische Variable zu verwenden, die innerhalb einer Template-Klasse deklariert wurde.
Kann diese Einschränkung durch die Einführung eines Namensraums umgangen werden?

 
Sergey Dzyublik:


Derzeit ist es nicht möglich, eine statische Variable zu verwenden, die innerhalb einer Template-Klasse deklariert wurde.
Könnte diese Einschränkung mit der Einführung von Namensräumen umgangen werden?

Es geht nicht um die Variable. Sie kann die Klasse BB nicht sehen und muss außerhalb der Klasse B als template<typename T> class BB genommen werden;

 
Alexey Navoykov:

Es geht nicht um die Variable. Es sieht die BB-Klasse nicht, es muss außerhalb der B-Klasse alstemplate<typename T>class BB verschoben werden;

Der Beitrag war an die Entwickler gerichtet, dass, wenn sie "Cheat" Unterstützung aus der Box.

Auch hier besteht das Problem darin, dass eine statische Variable, die innerhalb einer Vorlagenklasse deklariert wurde, nicht verwendet werden kann.
Was schlagen Sie vor, im Falle von typedef zu tun:

 
class A{
public:
   typedef void (*callback_A)();
   static callback_A f_ptr;

};
callback_A A::f_ptr = NULL;                  // Ok


template<typename T>
class B{
public:
   typedef T (*callback_B)();
   static callback_B f_ptr;
};
template<typename T>
callback_B B::f_ptr = NULL;                  //'callback_B' - declaration without type	

void func_A(){PRINT(__FUNCSIG__);}
int func_B(){PRINT(__FUNCSIG__); return 0;}

void OnStart(){  
   A::f_ptr = func_A;
   A::f_ptr();

   //B<int>::f_ptr = func_B;
   //B<int>::f_ptr();
}