Fehler, Irrtümer, Fragen - Seite 2202

 
Комбинатор:
Was ist so schwer? Behalten Sie die Ergebnisdatei im Auge + Native Sleep löst das Problem.

Übrigens, ja. Am einfachsten )))

 
Ein Synchronisationsobjekt mit einem größeren Overhead, als es die Datei bieten könnte? Blödsinn.
 
Alexey Navoykov:

Ja, es gibt ein solches Problem: Bei der Übergabe eines Zeigers per Referenz an einen überladenen Operator tritt ein Fehler auf. Dies ist in den letzten Builds aufgetreten, vorher war alles in Ordnung. Ich habe seit ein paar Monaten eine Anfrage an den Service-Desk geschickt, aber es ist still wie immer. Keine Antwort oder Verabschiedung.

Dies ist besonders kritisch für Zeiger-Arrays, da es keine andere Möglichkeit gibt, sie zu senden, außer per Referenz:

Ich sitze also immer noch auf 1554 Builds.

Ich konfrontiert das gleiche mit Zeigern in den neuesten Builds, früher war es möglich, void ohne Probleme übergeben, jetzt durch Verweis es nicht funktioniert, musste ich Code in mehreren meiner Bibliotheken zu korrigieren

 
Sergey Dzyublik:
Ein Synchronisationsobjekt mit einem größeren Overhead, als es die Datei bieten könnte? Blödsinn.

Ist es überhaupt notwendig, während der Prüfung in eine Datei zu schreiben? Was ist mit dem Speicher los?

 
Alexey Navoykov:

Danke für den Hinweis auf Sleep() von Kernel!

 
Комбинатор:
Warum ist das so schwer? Behalten Sie die Ergebnisdatei im Auge, und mit dem nativen Schlafmodus ist das Problem gelöst.

MQL Sleep() überspringt beim Testen die virtuelle Zeit (d.h. tickt die Zeit um 0,6 Sekunden), während die reale Zeit weniger als eine Millisekunde überspringt und das externe Programm in Echtzeit ausgeführt wird.

Aber mit Sleep von Kernel werde ich es versuchen).

 
Konstantin:

Ist es überhaupt notwendig, während der Prüfung in eine Datei zu schreiben? Was ist mit dem Speicher los?

Ja, die Verwendung des Speichers anstelle des Schreibens in eine Datei während des Tests spart etwas Zeit (ich habe keine genaue Schätzung vorgenommen, aber ich gehe von maximal 30 Millisekunden pro Zyklus aus), aber es ist immer noch das externe Programm, das die meiste Zeit benötigt.

Das Wichtigste ist also, die Tests auszusetzen, während das externe Programm läuft.

 
romachandr:

Ja, die Verwendung des Speichers anstelle des Schreibens in eine Datei während des Tests spart etwas Zeit (ich habe keine genaue Schätzung vorgenommen, aber ich gehe von höchstens 30 Millisekunden pro Zyklus aus), aber die meiste Zeit wird immer noch für die Ausführung des externen Programms aufgewendet.

Das Wichtigste ist also, die Tests auszusetzen, während das externe Programm läuft.

Im Allgemeinen unterscheidet sich die Geschwindigkeit beim Schreiben in eine Datei und in den Speicher um den Faktor zwei.

 
romachandr, ichscheine die Aufgabe falsch verstanden zu haben. Ich verwende keinen Tester, und ich bin nicht sicher, dass das Anhalten des EA die Erzeugung von Ticks stoppt. Ich bin hier inkompetent.
 

Und jetzt (Build 1809) ist es umgekehrt

https://www.mql5.com/ru/forum/1111/page2181#comment_6765277

Die 3. Zeile (in OnStart) wird kompiliert, die 4. Zeile jedoch nicht.

Mit anderen Worten

typedef int (*fn)( uint ); 
#import "Test1.ex5"
        void f( fn );
#import "Test2.ex5"
        int g(  int ); //(1)
        int g( uint ); //(2)
#import
void OnStart()
{
        f( g ); //Error: 'g' - cannot resolve function address
}

Und wenn Sie die Zeilen (1) und (2) vertauschen, ist das auch in Ordnung. Was ist der Unterschied?

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.03.09
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы