Der Unterschied zwischen extern und input - Seite 4

 
Igor Makanu:

Wie wäre es, eine Variable vom Typ enum zu deklarieren?

implizite enum-Umwandlung tst1.mq5 24 17


Sie können auch EnumToString() prüfen...


Ich denke, der Typ ohne deklarierte Variablen wurde bei der Kompilierung einfach als nicht verwendet verworfen.

Ich meine, man kann versehentlich eine Variable mit demselben Namen deklarieren wie in der bereits verwendeten Aufzählung und dann eine sehr lange und schmerzhafte Zeit mit der Suche nach dem Ort verbringen, an dem ich mir ins Knie geschossen habe.

 
Maksim Neimerik:
Wie lautet also das Urteil, meine Herren? Wenn ich ein .mq5-Programm mit .mqh (#include) schreibe, kann ich sicher extern schreiben und muss keine Angst vor unerwarteten Konsequenzen haben (wie ich es in mql4 getan habe), oder mit input ?

In MT5 verwenden Sie input, um externe Variablen zu deklarieren. Extern in MT5 hat einen anderen Zweck.

 
Dmitry Fedoseev:

In MT5 verwenden Sie input, um externe Variablen zu deklarieren. Extern in MT5 hat einen anderen Zweck.

Warum können Sie in MT5 nicht extern verwenden? - Ich habe mein Beispiel in MT5 erstellt, ich sehe keinen grundlegenden Unterschied

 
Igor Makanu:

Warum kann extern nicht in MT5 verwendet werden? - Ich habe mein Beispiel in MT5 erstellt, ich sehe keinen grundlegenden Unterschied

Weil die Leute aus Gewohnheit aus dem alten MQL4 versuchen, extern für Eingabeparameter zu verwenden.

Und in den neuen MQL4 und MQL5 wird input zusammen mit #property strict verwendet, und extern wird für andere Zwecke verwendet.

Deshalb wurde gesagt, man solle extern nicht verwenden.

 
Artyom Trishkin:

Weil die Leute aus Gewohnheit aus dem alten MQL4 versuchen, extern für Eingabeparameter zu verwenden.

Und im neuen MQL4 und MQL5 wird input zusammen mit #property strict verwendet, und extern wird für andere Zwecke verwendet.

Deshalb habe ich Ihnen gesagt, dass Sie extern nicht verwenden sollen.

Jeder versucht also, eine Menge Bukuffs zu schreiben, und das Ergebnis ist, dass sie NICHT NUR in MQL5 und auch nirgendwo anders verwendet werden sollten))))


ok, hier kommt das große Argument, imho - wenn Sie extern in einem alten Code sehen, ersetzen Sie es durch input und beheben Sie alle Warnungen, und möge die Macht von MQL mit Ihnen sein !!!!

 
Igor Makanu:

Sie sehen, jeder versucht eine Menge Bukuffs zu schreiben und endet damit, dass er NICHT NUR im MT5 oder überhaupt nirgends verwendet ))))


Ok, hier kommt das große Argument, imho - wenn Sie extern in einem alten Code sehen, ersetzen Sie es mit Eingabe und korrigieren Sie alle Warnungen, und möge die Macht der MQL mit Ihnen sein !!!!

Ich verstehe vieles von dem, was hier geschrieben wird, nicht.

Aber ich meinte nicht, extern in MQL5 und MQL4 mit #property strict zu verwenden, um externe Parameter von Programmen zu deklarieren, sondern für den in der Hilfe (vage) beschriebenen Zweck zu verwenden.

 

Ich habe nachgedacht, nur ein Gedanke... In MQL5, ist nicht die Arbeit mit iCustom() viel problematischer als in MQL4 (oder allgemein mit Indikatoraufrufen in MQL4)? Ist das so? Wenn ja, dann werde ich fortfahren.

Ich habe gerade angefangen, MQL5 ein wenig zu lernen...

Ich werde wahrscheinlich ein neues Thema eröffnen.
 
Maksim Neimerik:
Ich denke nur... In MQL5 ist es viel schwieriger, mit iCustom() als in MQL4 (oder allgemein mit Indikatoren Aufruf in MQL4) zu arbeiten, nicht wahr? Ist das so? Wenn ja, werde ich fortfahren.

nicht problematischer, es ist nur so, dass Sie in MQL5 mit iCustom() in zwei Schritten arbeiten müssen:

1. Holen Sie sich den Blinkerhebel

2. Abfrage der Werte von Indikatorpuffern mittels CopyBuffer()


in MQL4 - iCustom() funktioniert wie ein Funktionsaufruf mit Parametern - Sie rufen es auf, erhalten es

in MQL5 funktioniert es genauso - die Entwickler haben absichtlich die Funktionalität der eingebauten Funktionen reduziert und den Zugriff auf Zeitreihen unbequem gemacht - sie haben erst kürzlich iClose(), iHigh() zu MQL5 hinzugefügt, bevor sie die Daten in ein Array wie mit CopyBuffer() kopieren mussten

MT5 hat im Allgemeinen mehr Text als MT4

 
Igor Makanu:

nicht problematischer, es ist nur so, dass Sie in MQL5 mit iCustom() in zwei Schritten arbeiten müssen:

1. Holen Sie sich den Blinkerhebel

2. Abfrage der Werte von Indikatorpuffern mittels CopyBuffer()


in MQL4 - iCustom() funktioniert wie ein Funktionsaufruf mit Parametern - Sie rufen es auf, erhalten es

in MQL5 funktioniert es genauso - die Entwickler haben absichtlich die Funktionalität der eingebauten Funktionen reduziert und den Zugriff auf Zeitreihen unbequem gemacht - sie haben erst kürzlich iClose(), iHigh() zu MQL5 hinzugefügt, bevor sie die Daten in ein Array wie mit CopyBuffer() kopieren mussten

MT5 hat im Allgemeinen mehr Text als MT4

https://www.mql5.com/ru/forum/316800

MQL4 & MQL5
MQL4 & MQL5
  • 2019.06.29
  • www.mql5.com
Я тут вот что думаю, просто мысли... В MQL5 ведь намного проблемнее работа с iCustom() чем в MQL4 (да и вообще с вызовом индикаторов в советнике...
 

Leider ist die Implementierung von externen Variablen in MQL5 noch nicht abgeschlossen, und deshalb empfehle ich nicht, sie zu verwenden - es könnte zu Problemen führen. Ich meine den Mangel an Kontrolle über die obligatorischeeinmalige Initialisierung dieser Variablen.

Sie können ihn zum Beispiel so schreiben:

extern int a=1;
extern int a=2;

Stellen Sie sich vor, dass diese Initialisierungen in verschiedenen Plugins durchgeführt werden. Das Endergebnis hängt dann von der Reihenfolge ab, in der diese Dateien eingefügt werden.

Oder wir können es so schreiben (ausführbare Datei):

extern int a;

void OnStart() { Print(a); }

hier haben wir die externe Variable überhaupt nicht initialisiert, aber es gibt auch keinen Fehler.

Dementsprechend gibt es keine Kontrolle darüber, ob dieselben Variablen in anderen Dateien definiert sind oder nicht. Sie können den Namen versehentlich ändern, aber das Programm wird kompiliert, als ob nichts passiert wäre, obwohl in anderen Dateien eine Variable mit einem anderen Namen steht.

Alles in allem passt es nirgendwo hin. Deshalb ist es besser, Funktionen anstelle von externen Variablen zu verwenden, da diese garantiert nur eine Definition haben, nicht mehr und nicht weniger.

Grund der Beschwerde: