![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Dem Test wurde StringLen hinzugefügt, und die Zeichenkette wurde anders initialisiert. In der Dokumentation steht das eine, das tatsächliche Verhalten ist anders.
Und der Puffer zeigt in diesem Fall 0 statt 260 an.
In der Dokumentation ist angegeben, wann 0 zurückgegeben wird, und es ist für den angegebenen Fall angemessen
Die Dokumentation gibt an, wann 0 zurückgegeben wird, und ist für den angegebenen Fall angemessen
Die Dokumentation stimmt überhaupt nicht mit dem aktuellen Verhalten überein!
Und die Ergebnisse sind unterschiedlich ))Was ist der Unterschied zwischen den beiden Arten der Initialisierung?
Und es ist nicht klar, woher die linke Zahl 260 kommt.
Die Dokumentation stimmt überhaupt nicht mit dem aktuellen Verhalten überein!
Dokumentation: Ein Wert von 0 bedeutet, dass die Zeichenfolge eine Konstante ist und der Inhalt des Puffers nicht geändert werden kann.
Die Zeichenkette wird mit der Konstante "_" initialisiert, und der Compiler betrachtet die Zeichenkette bedingt (aus Effizienzgründen) als Konstante - warum nicht? Warum ist das ein Widerspruch? Dies gilt umso mehr, als mit ihm keine weiteren Operationen durchgeführt werden.
Und im Allgemeinen ist nicht klar, woher die linke Zahl 260 kommt.
Der Moderator erläuterte, woher sie stammt und warum sie im Falle von
erscheint nicht - Grund zur Überprüfung
Der Moderator erläuterte, woher
Ich denke, ich habe es mit Nummer 260, der Compiler selbst weist die anfängliche Größe desStringBufferLen Puffers zu 260.
Wenn die Länge der Zeichenkette kleiner als 260 ist, wird StringBufferLen 260 ausgeben, nicht die tatsächliche Länge der Zeichenkette!
Wenn die Länge der Zeichenkette größer als 260 ist, wird der tatsächliche Wert der Zeichenkette gedruckt.
Wenn wir also die Funktion StringBufferLen mit einer Stringlänge von weniger als 260 Zeichen verwenden, erhalten wir nicht die tatsächliche Stringlänge, sondern immer 260.
Dies muss ein Fehler sein.
Sobald die Länge 260 Zeichen überschreitet, erhalten wir die tatsächliche Länge der Zeichenfolge.
p.s. Da die Dokumentation nicht mehr aktuell ist, ist sie sehr irreführend.
Das heißt, dass wir bei Verwendung der Funktion StringBufferLen bei einer Stringlänge von weniger als 260 Zeichen nicht die tatsächliche Stringlänge erhalten, sondern immer 260.
Dies muss ein Fehler sein.
Sobald die Länge 260 Zeichen überschreitet, wird die tatsächliche Länge angezeigt.
Streng genommen die Länge der Zeichenkette: StringLen und Pufferlänge: StringBufferLen sind eher seltene Funktionen. Und im Allgemeinen dürfen sie nicht übereinstimmen.
Das sind zwei zumindest fragwürdige Fälle:
Die Ausführungsergebnisse zeigen, dass der Compiler entgegen der Logik handelt:
Die Ausführungsergebnisse zeigen, dass der Compiler entgegen der Logik handelt:
Die Vorabzuweisung der Größe von Puffern für Strings ist eine interne Angelegenheit des Compilers.
Wir werden die Handhabung von Zeichenketten noch viele Male ändern.