Der Unterschied zwischen extern und input - Seite 2

 
Artyom Trishkin:

Bei der Eingabe ist alles klar. Die Sache mit extern - dort, so scheint es mir, kann man zunächst Variablen mit dem gleichen Typ und Bezeichner in verschiedenen Dateien deklarieren, um sie dem Projekt zuzuordnen, und dann stellt sich heraus, dass man sie nicht auf diese Weise deklarieren kann. Natürlich ist dies ein dreistöckiger Impressionismus...

Die Bedeutung von extern ist, dass wenn die Hauptdatei (main) eine Variable hat und eine andere Datei an diese Datei angehängt ist. Und in dieser angehängten Datei müssen wir die in der Hauptdatei deklarierte Variable verwenden, in der angehängten Datei deklarieren wir sie dann als extern. Dadurch kann die verknüpfte Datei kompiliert werden, und wenn die Hauptdatei kompiliert wird, wirddie Variablendeklaration in der verknüpften Datei ignoriert.

 
Alexey Viktorov:

Ich weiß es nicht. Für mich ist die gesamte Dokumentation selbsterklärend. Wenn es irgendwo Schwierigkeiten gibt, verschwinden sie nach einigem Experimentieren.

Aber wenn ich mit bitweisen Operationen nicht vertraut bin, kann ich jeden Artikel lesen, den Sie wollen... Ich werde kein Wort davon verstehen. Genauso wie ich nichts über Flaggen und Flaggensätze verstehen konnte, bis Artem sie mir mit einer Stimme erklärte.

Es ist verständlich, wenn man Werte von ihr verlangt, aber wie das Ganze vorher und nachher funktioniert - dunkelste Dunkelheit

 
Fast235:

es ist verständlich, wenn man Wert darauf legt, aber wie das alles vorher und nachher funktioniert, ist düster, der dunkelste Nebel

Wer ist sie?

 
Alexey Viktorov:

Wer ist sie?

das Wesentliche der Arbeit

 
Alena Lysenkova:

gibt es:
1) extern funktioniert nur in mql4.
2) Kommentare nach der Eingabe werden in den Eingabeparametern anstelle des Namens der Eingabevariablen angezeigt
Eingabe int ma_period = 20;
- wird "ma_period" angezeigt.
Eingabe int ma_period = 20; // MA-Periode
- es wird "MA-Periode" geschrieben.
um genau so zu sein wie in mql4, wird der strikte Kompilierungsmodus benötigt #property strict.
Dieser Trick ist bei extern nicht vorhanden.
3) Externe Variablen können im Code wie alle globalen Variablen geändert werden, Inputs nicht.

Ursprünglich gab es nur mql4 und extern, kein Input war vorhanden, auch nicht OOP in mql4.
Dann wurde mql5 erstellt, und Input wurde sofort einbezogen, weil mql5 im Allgemeinen genau auf OOP ausgerichtet war.
Vor etwa 2-3 Jahren wurde mql4 um viele Funktionen von mql5 erweitert, einschließlich der Eingabe.

Über welches Terminal schreiben Sie?

Wenn Sie in MT5 eine externe Variable als extern im Indikator deklarieren, kann der Indikator möglicherweise nicht über iCustom() aufgerufen werden.

 
Dmitry Fedoseev:

Über welches Terminal schreiben Sie?

Wenn Sie in MT5 eine externe Variable als extern in einem Indikator deklarieren, kann der Indikator möglicherweise nicht über iCustom() aufgerufen werden.

Ich will Ihnen jetzt keine Vorwürfe machen, aber Sie schreiben "es könnte scheitern"... es kann sein, dass es funktioniert oder auch nicht! Ich meine, es ist schwer für mich als Autodidakt ohne spezielle Ausbildung, solche Unsicherheiten zu verstehen...

 
Alena Lysenkova:

gibt es:
1) extern funktioniert nur in mql4.
2) Kommentare nach der Eingabe werden in den Eingabeparametern anstelle des Namens der Eingabevariablen angezeigt
Eingabe int ma_period = 20;
- wird "ma_period" angezeigt.
Eingabe int ma_period = 20; // MA-Periode
- es wird "MA-Periode" geschrieben.
um genau so zu sein wie in mql4, wird der strikte Kompilierungsmodus benötigt #property strict.
Dieser Trick ist bei extern nicht vorhanden.
3) Externe Variablen können im Code wie alle globalen Variablen geändert werden, Inputs nicht.

Ursprünglich gab es nur mql4 und extern, kein Input war vorhanden, auch nicht OOP in mql4.
Dann wurde mql5 erstellt, und Input wurde sofort einbezogen, weil mql5 im Allgemeinen genau auf OOP ausgerichtet war.
Vor etwa 2-3 Jahren wurde mql4 um viele Funktionen von mql5 erweitert, einschließlich der Eingabe.

extern funktioniert in beiden Fällen. Das gilt auch für die Eingabe in MQL5 und MQL4. Ihr Zweck ist ein anderer, und er ist in der Hilfe beschrieben.

Warum wird man sofort auf ein Missverständnis über den Zweck von Eingabe- und externen Variablen hingewiesen?

 
Dmitry Fedoseev:

Die Bedeutung von extern ist, dass wenn die Hauptdatei (main) eine Variable hat und eine andere Datei an diese Datei angehängt ist. Und in dieser angehängten Datei müssen wir die in der Hauptdatei deklarierte Variable verwenden, in der angehängten Datei deklarieren wir sie dann als extern. Dies hat zur Folge, dass die verknüpfte Datei zwar kompiliert werden kann, die Variablendeklaration in der verknüpften Datei aber beim Kompilieren der Hauptdatei ignoriert wird.

Ich dachte auch, dass dieser Modifikator wie in C++ funktioniert, d.h. er wird in der Include-Datei deklarierthttps://www.mql5.com/ru/forum/160683/page867#comment_11927748

Überprüft, dass es in C++ nicht so funktioniert, wie es sollte


tstextern Bibliotheksdatei

//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
extern int koef=1 ;
 int MyCalculator(int value,int value2) export
   {
    return((value+value2)*koef);
   }
//+------------------------------------------------------------------+

Skript-Datei:

#import "tstextern.ex5"
int MyCalculator(int value,int value2);
#import

extern int koef;

void OnStart()
  {
      koef = 666;
      int res = MyCalculator(100,200);
      Print("result = ",res);
   
  }
//+------------------------------------------------------------------+

jede Manipulation der Variablekoef bewirktnichts, da sie sich immer noch im lokalen Bereich (innerhalb jeder Datei) befindet


Artyom Trishkin:

Ihr Zweck ist ein anderer, und er ist in der Hilfe beschrieben.

Der Unterschied liegt in der Zugangskontrolle:

Eingabe - sie kann nur gelesen werden, das Schreiben ist verboten.

extern - es kann gelesen und geschrieben werden, und nach der Neuinitialisierung des MQL-Programms wird dieser Wert auf den in den externen Einstellungen angegebenen Wert zurückgesetzt

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2019.06.02
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Maksim Neimerik:

Ich will jetzt nicht negativ sein, aber Sie schreiben "es könnte nicht funktionieren"... es könnte nicht funktionieren, aber es könnte funktionieren! Ich meine, es ist schwer für mich als Autodidakt ohne spezielle Ausbildung, solche Unsicherheiten zu verstehen...

Ich meine, ich habe jetzt nicht nachgesehen. Und es ist gefährlich zu sagen, was einmal da war, weil sich die Dinge so oft ändern. Vielleicht war es eine vorübergehende Störung.

 
Igor Makanu:

dachte auch, dass dieser Modifikator wie in C++ funktioniert, d.h. er wird in der Plugin-Datei deklarierthttps://www.mql5.com/ru/forum/160683/page867#comment_11927748

es funktioniert nicht so, wie es in C++ funktionieren sollte


tstextern Bibliotheksdatei

Skript-Datei:

jede Manipulation der Variablekoef bewirkt nichts, da sie sich immer noch im lokalen Bereich (innerhalb jeder Datei) befindet

Nun, Sie haben eine Bibliothek. Natürlich wird es unterschiedliche Variablen geben. Ich meine die Anbindung von mqh über include.