Fehler, Irrtümer, Fragen - Seite 3006

 
Aliaksandr Hryshyn:
Dort kopiert der Zeiger
Wie können Sie Daten kopieren? Nun, abgesehen von Element für Element?
 
Vasiliy Pushkaryov:
Und wie können Sie die Daten kopieren? Nun, abgesehen von Element für Element?

Ich weiß nicht, ob das richtig ist, aber der zusätzliche Konstruktor hat das Problem gelöst. Vielleicht ist es für jemand anderen nützlich.

#include <Arrays\ArrayObj.mqh>

CArrayObj ArrCur;       // массив с объектами, каждый объект содержит структуру с полями ордеров и его id
CArrayObj ArrPrev;  // массив с объектами, каждый объект содержит структуру с полями ордеров и его id

class CID : public CObject
{
  public:  int id;
           CID() {}
           CID(CID* pt) {this = pt;}
           
};


void OnStart()
{
  // -----------------------------------------------------------------
    CID* pCur = new CID;          // создаем объект для текущих параметров
    pCur.id = 25;                 // вносим текущие данные
    ArrCur.Add(pCur);             // помещаем в массив объектов
    
    CID* pTemp = ArrCur.At(0);    // вытягиваем объект по указателю
    CID* pPrev = new CID(pTemp);  // в дин.объект копируем в конструкторе данные с предыд.указателя
    ArrPrev.Add(pPrev);           // помещаем в массив объектов
    
    ArrCur.Clear();               // чистим текущий массив
  // -----------------------------------------------------------------
  
   // --- для вывода в журнал
  int sizeCur = ArrCur.Total();       // размер = 0
  int sizePrev = ArrPrev.Total();     // размер = 1
  
  ENUM_POINTER_TYPE pTypeCur = CheckPointer(ArrCur.At(0));    // POINTER_INVALID
  ENUM_POINTER_TYPE pTypePrev = CheckPointer(ArrPrev.At(0));  // POINTER_DINAMYC
  
  Print(__FUNCTION__, " sizeCur=", sizeCur, " pTypeCur=", EnumToString(pTypeCur));
  Print(__FUNCTION__, " sizePrev=", sizePrev, " pTypePrev=", EnumToString(pTypePrev));

  ArrPrev.Clear();             // чистим массив
}
 
fxsaber:

ChartScreenShot funktioniert im visuellen Testmodus nicht korrekt.

void OnTick()
{
  Print(ChartScreenShot(0, "Test.png", 100, 100)); // true, но файл нулевой длины
  
  ExpertRemove();
}

Hallo, liebe Entwickler. Darf ich fragen, wann ChartScreenShot() in der Testversion funktionieren wird?

 

Können Sie mir sagen, wie ich die Eingabeparameter (F7) oder den Wert der globalen Variablen (F3) in dieser Art von EA ändern kann?

input int i = 0;

const bool Init = EventSetTimer(1);

void OnTimer()
{
  Alert("");
}

Selbst die Herausnahme aus der Tabelle ist problematisch.

 
Guten Abend, ich habe da eine Frage? Installiert Agent Manager zum Verkauf, aber die Wolke Spalte sagt deaktiviert und den ganzen Tag auf sechs Prozessoren nicht eine einzige Bewegung. Im Konto werden die Verarbeiter angezeigt. Ist das normal?
 

Zuvor war Debug nicht vollständig nutzbar, aber das Ausführen von Skripten mit F5 ist manchmal praktisch (obwohl es nicht klar ist, warum es auf einem neuen Diagramm und nicht auf dem aktuellen Diagramm läuft).

Und ich habe zufällig solche Einträge im Protokoll gefunden:

Gleichzeitig wird das Skript selbst ausgeführt. Ich habe versucht, die folgende Zeile in den Code einzufügen:

{ DebugBreak(); Print( "DebugBreak" ); }

Die Zeile "DebugBreak" wird gedruckt, aber nicht gestoppt.

 
A100:

(obwohl es nicht klar ist, warum es auf der neuen Karte läuft und nicht auf der aktuellen).

Im Editor Service->Einstellungen->Debugging/Profiling
können Sie einstellen, welches Symbol für das Debugging verwendet werden soll, aber es läuft immer noch auf einem separaten Diagramm.
Wenn dort kein Symbol angegeben ist, wird das allererste (oberste) Symbol von Market Watch verwendet.

Ich habe immer Haltepunkte. Ich setze die Punkte auf Build 2875
, klicke auf Debugging mit echten Daten, und das Programm springt durch, ohne anzuhalten, nachdem es das Debugging beendet hat.
Ich starte das Terminal mit dem Editor neu, und dann fängt es an, Haltepunkte zu sehen, bis einige andere Start/Stopp-Debugging, dann beginnt es wieder zu überspringen.
Beim Debuggen von historischen Daten wird überhaupt ein Tester-Fenster aufgerufen, und Haltepunkte werden übersprungen, sobald das Debuggen beendet ist.
Er hat nie an einem Haltepunkt bei historischen Daten angehalten, sondern überspringt die ganze Zeit, um die Fehlersuche abzuschließen.
Aber
warum der Tester auf historischen Daten aufgerufen wird und die gespeicherten Parameter daraus entnommen werden, weiß ich nicht, ist das so vorgesehen oder ist das eine Schieflage.

 
Roman:

Im Editor Service->Einstellungen->Debugging/Profiling
können Sie einstellen, welches Symbol für das Debugging verwendet werden soll, aber es läuft immer noch auf einem separaten Diagramm.
Wenn das Symbol dort nicht angegeben wird, wird das erste (oberste) Symbol von Market Watch verwendet.

Meiner Meinung nach ist dies äußerst ungünstig. Das aktuelle Diagramm enthält Indikatoren, grafische Objekte, mit denen das Programm interagieren soll, Einstellungen usw. Es wird ein neues "leeres" Diagramm begonnen. Außerdem wird das Programm im normalen Modus (nicht bei der Fehlersuche) vom Navigator aus auf der aktuellen Karte gestartet, nicht auf der neuen - das ist eine offensichtliche Inkonsistenz

 
Auch die Visualisierung ist ein wenig verwirrend
https://www.mql5.com/ru/forum/368597
Ошибка моделирования визуализация\без
Ошибка моделирования визуализация\без
  • 2021.05.04
  • www.mql5.com
Кто нибудь может объяснить как это происходит , или протестировать у себя...
 
Ausführungsfehler (falsche Substitutionsreihenfolge)
#define  MACRO( X )
void OnStart()
{
        MACRO( __COUNTER__ )
        MACRO( __COUNTER__ )
        Print( __COUNTER__ );
}

Ergebnis: 2

Erwartetes Ergebnis: 0