
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
Die Ausführungsergebnisse zeigen, dass der Compiler entgegen der Logik handelt:
Bei einer rein konstanten Zeichenkette ist die Größe des Puffers durch StringBufferlen=0, was bedeutet, dass die Zeichenkette konstant ist:
Die Neuzuweisung einer "vermeintlich" konstanten Zeichenkette ist keine Arbeit mit einer Konstanten, sondern die Erstellung einer dynamischen Variablen mit einer Vorbelegung von 260 Zeichen:
Bei einer rein konstanten Zeichenkette ist die Puffergröße mit StringBufferlen=0, was bedeutet, dass die Zeichenkette konstant ist:
Die Neuzuweisung einer "vermeintlich" konstanten Zeichenkette ist keine Arbeit mit einer Konstanten, sondern die Erstellung einer dynamischen Variablen mit einer Vorzuweisung von 260 Zeichen:
es ist an der Zeit, Allokatoren einzuführen )))
Eine Erinnerung daran, dass es einen Fehler mit dem String-Puffer gibt:
Die Funktion aus der DLL kann alles sein.Ich schlage vor, eine erweiterte Version derStringToTime-Funktion zu MQL in der Form hinzuzufügen:
Denn in der aktuellen Version gibt die Funktion immer eine gültige Zeit zurück, auch wenn die Zeichenkette Unsinn enthält, und es wird das aktuelle Datum zurückgegeben, was besonders seltsam ist:
StringToTime("aaabbbccc") liefert "2019.09.05 01:00:00" Ist das normal? In dieser Implementierung ist die Funktion gesundheitsgefährdend. Daher wird eine Version mit Korrektheitsprüfungen benötigt.
Bisher müssen wir mit unserer eigenen Funktion parsen,aber das Problem ist, dass die Zeit in verschiedenen Formaten angegeben werden kann.Und ich möchte nicht wirklich all diese Formate programmieren und das Rad neu erfinden, wenn die Zeit bereits in MQL implementiert wurde.
Dies gilt im Grunde auch für andere Funktionen zur Umwandlung von Zeichenketten: StringToInteger, StringToDouble, für die ebenfalls keine Gültigkeitsprüfung vorgesehen ist.
p.s. Hmm, es stellt sich heraus, dassGetLastError() in diesen Fällen Fehler erzeugt. Das wusste ich nicht. Die Dokumentation für diese Funktionen sagt nichts dergleichen. Das beseitigt das Problem, obwohl es mit einem bool einfacher wäre.Ich unterstütze Alexeys Vorschlag, denn der sichere Umgang mit Zeichenketten ist der Schlüssel zur Vermeidung von versteckten Fehlern.
Fehler "Eigenschaft existiert bereits mit anderem Wert und wird übersprungen".
Ich habe es zum ersten Mal benutzt. In keiner anderen Datei ist sie enthalten. Hängt nicht vom Wert ab. Build 2136.
Bitte bringen Sie den Styler im alten Stil zurück.
Jetzt weiß ich nicht, was hier laufen soll:
Dieses Stück sah früher so aus:
Fehler "Eigenschaft existiert bereits mit anderem Wert und wird übersprungen".
Ich habe es zum ersten Mal benutzt. In keiner anderen Datei ist sie enthalten. Hängt nicht vom Wert ab. Build 2136.
Dieser Fehler tritt bei der Arbeit mit Projekten auf, wenn der Wert der im Quellcode angegebenen Eigenschaft nicht mit dem Wert in den Projekteinstellungen übereinstimmt.
Projekt-Eigenschaften
Bitte bringen Sie den Styler im alten Stil zurück.
Jetzt weiß ich nicht, was hier laufen soll:
Dieses Stück sah früher so aus:
Mehrfach verschachtelte ifs können nicht durch eine Ausrichtung gespeichert werden. Wir müssen den Code ändern, um ihn lesbar zu machen.
Mehrfach verschachtelte ifs können von keiner Ausrichtung gespeichert werden. Sie müssen den Code ändern, um ihn lesbar zu machen.
Es gibt keine Mehrfachverschachtelung - die oberste Ebene ist if, then if else.
Ich frage nach dem alten Stil, als alles andere so aussah:
- stand in einer einzigen Zeile und der nachfolgende Text war nicht nach rechts versetzt.
Hier ist ein Beispiel aus der Hilfezur bedingten if-else-Anweisung (der alte Styler)
und das ist es, was der neue Styler tut: