Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 161
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
2020.01.27 01:15:57.859 tst (EURUSD,H1) (null) , 0.000000 , 0
wenn ich die Typkonvertierung entferne, ist der Ausdruck "NULL" vom Typ "void" illegal
Interessanterweise stellt sich heraus, dass nput string als void initialisiert werden kann
NULL ist eine Initialisierung. Das Beispiel zeigt absichtlich eine nicht eingegebene Zeichenkette.
NULL / NIL (in anderen Worten) kann keine Initialisierung einer konstanten String-Entität sein.
Zumindest weil der mql-String kein "Zeiger" wie in C ist. Es hat keinen besonderen Zustand "gar nichts".
PS (oh, das hätte ich von mir selbst nicht erwartet)
Sie hat keinen besonderen Zustand von "gar nichts".
Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien
Eigenheiten von mql5, Tipps und Tricks
fxsaber, 2020.01.26 15:54
Ich benutze diesen Zustand jeden Tag.
zumindest weil ein mql-String kein "Zeiger" wie in C ist. Es hat keinen besonderen Zustand "gar nichts".
PS (oh, das hätte ich von mir selbst nicht erwartet).
leider nein, ein String in MQL ist eine Entität mit zugewiesenem Speicher.@Ilyas hat erklärt, warum StringBufferLen() nicht die Stringlänge anzeigt, sondern den zum Speichern des Strings verwendeten Speicher.
Ich benutze diesen Zustand jeden Tag.
Es ist kein Indikator überhaupt, in MQL4 ich unset Zeiger auf jedes Objekt mit StringConcatenate(), d.h. die eingebauten Funktionen arbeiten nicht durch MQL-Regeln implementiert )))
Es ist kein Indikator überhaupt, ich unset Zeiger auf jedes Objekt in MQL4 mit StringConcatenate(), d.h. die eingebauten Funktionen sind nicht durch MQL-Regeln implementiert )))
Es macht keinen Unterschied, was drin ist.
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Eigenheiten von mql5, Tipps und Tricks
Igor Makanu, 2020.01.26 22:27
Es macht keinen Unterschied, wie es innen aussieht.
ergänzte meinen Beitrag mit Ihrem Beispiel
Ich habe auch ein paar weitere Experimente mit der Eingabe s = NULL durchgeführt;
Soweit ich es verstanden habe, wird der Wert der Eingangsvariablen NULL sein, solange wir nicht versuchen, ihn zu verwenden, aber in dem Moment, in dem wir versuchen, einer anderen Variablen einen Wert zuzuweisen oder sie einfach zu löschen, wird NULL verschwinden, d.h. dieser Eingangsvariablen wird Speicher zugewiesen
Soweit ich das verstehe, ist dieser Wert NULL, solange wir nicht versuchen, den Wert einer Eingangsvariablen zu verwenden. Wenn wir aber in diesem Moment versuchen, den Wert dieser Eingangsvariablen einer anderen Variablen zuzuweisen oder diese Eingangsvariable einfach zu löschen, dann verschwindet dieser NULL-Wert, d.h. dieser Eingangsvariablen wird Speicher zugewiesen
Die Funktionsweise der Eingangsvariablen wurde oben bereits ausführlich beschrieben.
Es macht keinen Unterschied, was drin ist.
es gibt (noch) eine Spezifität der Dereferenzierung von Entitäten (es gibt keine Zeiger in Mql, es ist nicht C, es soll Entitäten geben)
input ist eine Konstante, die beim Start deklariert wird. Sie können ihr nicht physisch den Wert "NULL" geben.
const string nothing=NULL; /// <--- ЭТО ЧТО ?
Ja, dieses Verhalten ist wahrscheinlich einfach "narrensicher".
Da die Eingangsvariable initialisiert werden muss, wird das= NULL künstlich mit ="" gleichgesetzt , obwohl die Variable bereits mindestens ein Byte im Speicher belegt.
In MQL5 die Einträge:
sind absolut identisch. Für die Variable wird kein Speicher zugewiesen. Jedenfalls habe ich keine Unterschiede festgestellt.
In Java zum Beispiel sind solche Datensätze leicht unterschiedlich, obwohl in beiden Fällen kein Speicher für die Variable zugewiesen wird. Die erste Variante (String str = null;) wird als initialisiert betrachtet, obwohl kein Speicher für die Variable zugewiesen wird und die Variable als leer ausgegeben werden kann. Im zweiten Fall (String str;) wird beim Versuch, die Variable zu drucken, ein Fehler wegen einer nicht initialisierten Variable erzeugt.
D.h. MQL5 ist in dieser Hinsicht toleranter.
Was besser ist, weiß ich nicht einmal.
Wie wird einer Variablen kein Speicher zugewiesen?
Der Speicher wird zugewiesen, und die Variable enthält willkürlichen Unsinn.
Und da string keine Werte ausgibt, ist es logisch, dass der Puffer leer ist.
Wie wird einer Variablen kein Speicher zugewiesen?
Der Speicher wird zugewiesen, aber die Variable enthält keinen willkürlichen Unsinn.
Und da string keine Werte ausgibt, ist es logisch, dass der Puffer leer ist.