Fehler, Irrtümer, Fragen - Seite 1687

 
Frage. Die Größe einer leeren Klasse in MQL beträgt 16 Byte (in einem 64-Bit-System). Und warum? 8 Bytes müssen von dem Zeiger auf die virtuelle Tabelle belegt werden (laut Dokumentation haben alle Klassen in MQL diesen Zeiger). Und die restlichen 8 Bytes werden von was belegt?
 
Liebe Kollegen, ist jemand auf dieses Problem gestoßen? Das Terminal wurde heute Morgen auf biuld 1430 aktualisiert. Und wie es der Zufall will, habe ich gestern meinen Expert Advisor für die Arbeit mit Dateien über die Standardbibliothek umgeschrieben (vorher war er mit den Standard-Datei-Operationen nicht ganz erfolgreich), aber ich habe es nicht getestet - ich habe es auf morgen verschoben. Und hier ist das Ergebnis: Der Expert Advisor findet beim Testen keine Datei - die Funktion FileIsExist gibt immer false zurück. Ich weiß nicht, wo der Fehler liegt - ob er in meinen Änderungen oder im Update liegt. Die Sache ist die, dass die Dokumentation besagt, dass sich die Datei während des Tests im Ordner MQL5/Tester/Files befinden muss. In Wirklichkeit ist der Weg jedoch ein anderer: ...{Roaming\MetaQuotes\Tester\...irgendein Hex-Ding...\Agent-127.0.0.1-3000\MQL5\Files. D.h. es gibt zumindest einen Fehler in der Dokumentation. Aber die Hauptsache ist, dass, wenn der Test beginnt, die Datei, die dort manuell platziert wird, aus dem angegebenen Ordner gelöscht wird, obwohl meine FileIsExist-Funktion in OnInit vorgeschrieben ist und sie die erste ist, die auf die Dateien zugreift. Ich habe also eine Frage: Wo sollte eine Datei während der Prüfung gespeichert werden? Und was passiert überhaupt?
 
BlackTomcat:
Liebe Kollegen, ist jemand auf dieses Problem gestoßen? Das Terminal wurde heute Morgen auf biuld 1430 aktualisiert. Und wie es der Zufall will, habe ich gestern meinen Expert Advisor für die Arbeit mit Dateien über die Standardbibliothek umgeschrieben (vorher war er mit den Standard-Datei-Operationen nicht ganz erfolgreich), aber ich habe es nicht getestet - ich habe es auf morgen verschoben. Und hier ist das Ergebnis: Der Expert Advisor findet beim Testen keine Datei - die Funktion FileIsExist gibt immer false zurück. Ich weiß nicht, woran es liegt - entweder an meinen Änderungen oder an der Aktualisierung. Die Sache ist die, dass die Dokumentation besagt, dass sich die Datei während des Tests im Ordner MQL5/Tester/Files befinden muss. In Wirklichkeit ist der Weg jedoch ein anderer: ...{Roaming\MetaQuotes\Tester\...irgendeine Hex-Sache...\Agent-127.0.0.1-3000\MQL5\Files. D.h. es liegt zumindest ein Fehler in der Dokumentation vor. Aber die Hauptsache ist, dass, wenn ich mit dem Testen beginne, die Datei, die dort manuell platziert wurde, aus dem angegebenen Ordner gelöscht wird, obwohl meine FileIsExist-Funktion in OnInit vorgeschrieben ist und sie die erste ist, die auf die Dateien zugreift. Ich habe also eine Frage: Wo sollte eine Datei während der Prüfung gespeichert werden? Und was passiert überhaupt?
Nun, das Problem wurde durch die Verwendung des Flags FILE_COMMON umgangen.
Die Datei befindet sich in dem Ordner ...{Roaming\MetaQuotes\Terminal\Common\Files. Während des Tests wird sie dort nicht gelöscht und kann normal gelesen werden.
 

Frage: Wie kann ich meine Beiträge im MQL4-Forum finden? Vor etwa zwei Jahren wurde ein Thread mit angehängtem Code erstellt, und dieser Code ist jetzt interessant geworden, aber die Forensuche ist stumm. Wenn ich meine Veröffentlichungen aufrufe, ist dieses Thema nicht dabei. (gelöscht?)

 

Woher weiß ich, ob ein Makro jemals verwendet wurde oder nicht?

 
fxsaber:

Woher weiß ich, ob ein Makro jemals verwendet wurde oder nicht?

wie diese:

#ifndef __MY_MACROS__   // если макрос не использован
   #define __MY_MACROS__
//----------------------------------------
// тут ваш код использующий макрос
//----------------------------------------
#endif // __MY_MACROS__
 
coderex:

wie diese:

Ich meinte die andere Sache.
#define  MACROS(A) A

void Func()
{
  MACROS(A) // Если закомментировать, то макрос ни разу не использовался
}

// Вот здесь хотелось бы понять, использовался ли хоть раз макрос или нет.
 
Helfen Sie mir herauszufinden, wie man eine Überprüfung in der Quelle machen, wenn OnInit definiert ist oder nicht?
 
fxsaber:
Ich habe mich auf etwas anderes bezogen.
Das einfachste ist ein Makroaufrufzähler in einer globalen Variablen, der vom Makro selbst überschrieben wird.
 
Sergei Vladimirov:
Das einfachste ist ein Makroaufrufzähler in einer globalen Variablen, der aus dem Makro selbst umgeschrieben wird.
Es gibt eine solche Variante, aber sie ist leider nicht für alle Makros geeignet.
Grund der Beschwerde: