Fehler, Irrtümer, Fragen - Seite 2891

 
A100:

Dies kann der Fall sein, wenn der Compiler objektiv keine Informationen hat:

d.h. f() kann i initialisiert haben oder auch nicht. Und in diesem Fall gibt der C++-Compiler eine Warnung aus, der MQL-Compiler jedoch nicht.

In C++ sind die Adressen der Speicherzellen nicht versteckt, deshalb wird die Variable mit Müll initialisiert.
In Mql sind die Adressen der Speicherzellen verborgen und nicht zugänglich. So hat der Mql-Entwickler den Compiler verpfuscht ))

Kurz gesagt, initialisieren Sie immer die Variablen und Sie werden keine Kopfschmerzen bekommen.
 
Roman:

Ja, aber vor der ersten Iteration ist die Variable j noch nicht initialisiert, worauf der Compiler schwört.

Wenn Sie diese Variable nicht verwenden oder die Zuweisung i=j unten in den Schleifenkörper setzen, was mit der Ausführung der ersten Option identisch wäre, gibt es keine Warnungen. Der Compiler prüft nicht die Logik der Schleife und die Ausführungsreihenfolge, sondern die Syntax von oben nach unten (ich glaube, ich weiß es nicht genau).

 
Es liegt ein Fehler im Suchdienst der Website vor. Diese Suche führt nicht zu diesem Ergebnis.
 

fxsaber:

Und in anderen Situationen.

Stattdessen auf "Antworten" zu drücken, bringt das Terminal zum Beben - eine großartige Innovation

 
Kompilierungsfehler:
#define  MACRO(X)\ //Error: '\' - unexpected in macro definition
              X
 
TheXpert:

Wenn Sie stattdessen auf "Antworten" drücken, laden Sie das Terminal herunter - eine großartige Innovation.

Es ist alles das Gleiche... Und mit der Frage, für die ich fast hier genagelt (in der gleichen Dropdown-Menü Brieftasche und ungelesenen Themen - nur Zwillingsbrüder), und mit Ihrem, und doch (ich weiß nicht, wie jemand) Ich hänge solche ... "Ding".

Was ist mit dieser Inschrift zu tun? Nirgends ein Link, um zu sehen, wer gefragt wird und warum, nein (vielleicht liegt es an der Brieftasche, aber ich habe dort nicht nachgesehen).

Man hat den Eindruck, dass all diese "wunderbaren" Änderungen an der Website von einer Person vorgenommen werden .... Und persönlich für sich selbst. Genau so, wie er denkt, dass er es für sich selbst braucht. Und er schert sich einen Dreck um unsere Meinung...

 
Сергей Таболин:

Was ist mit dieser Inschrift zu tun?

Ich weiß nicht, wenn es normale Anwendungen gibt, verschwindet es.
 

WennREASON_ACCOUNT geändert wird, sollte es das vorherige Konto erhalten und die Arbeit damit beenden, logisch, aber nein, wenn sich das Konto geändert hat, erhalten wir eine neue Nummer in der Deinit bei REASON_ACCOUNT.

Logischerweise sollte das Programm die Arbeit mit den aktuellen Daten beenden und bei einem neuen Aufruf die neuen Daten senden und die Daten dabei nicht verändern...

 
Vladimir Pastushak:

WennREASON_ACCOUNT geändert wird, sollte es das vorherige Konto erhalten und die Arbeit damit beenden, logisch, aber nein, wenn sich das Konto geändert hat, erhalten wir eine neue Nummer in der Deinit bei REASON_ACCOUNT.

Das Programm sollte logischerweise die Arbeit mit den aktuellen Daten abschließen und die neuen Daten bei einem neuen Aufruf übergeben, ohne dabei die Daten zu verändern...

Der folgende Code zeigt das falsche Verhalten

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Start ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(reason == REASON_ACCOUNT)
      Print("Stop ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+

Ergebnis

2020.10.28 17:23:05.725 Test (EURUSD,M1)        Stop 600....
2020.10.28 17:23:06.306 Test (EURUSD,M1)        Start 600....
2020.10.28 17:23:17.478 Test (EURUSD,M1)        Stop 535....
2020.10.28 17:23:18.156 Test (EURUSD,M1)        Start 535....
 
Vladimir Pastushak:

WennREASON_ACCOUNT geändert wird, sollte es das vorherige Konto erhalten und die Arbeit damit beenden, logisch, aber nein, wenn sich das Konto geändert hat, erhalten wir eine neue Nummer in der Deinit bei REASON_ACCOUNT.

Das Programm sollte logischerweise die Arbeit mit den aktuellen Daten beenden und die neuen Daten bei einem neuen Aufruf senden, ohne dabei die Daten zu verändern...

Dies ist kein Fehler und das Verhalten ändert sich daher nicht. Bedenken Sie nur diese Besonderheit.