Fehler, Irrtümer, Fragen - Seite 2461
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
Könnten Sie diesen Punkt näher erläutern?
Dies ist meine subjektive Meinung, wenn ich irgendwo falsch liege, helfe ich gerne weiter.
StringLen arbeitete früher mit O(n) bis zum ersten NULL-Zeichen (0x0000) in der Zeichenkette, jetzt arbeitet es mit O(1).
DieLänge von Zeichenketten konnte immer über StringSetCharacter(str, pos, 0x00) abgeschnitten werden, aber aus irgendeinem Grund wurde StringSetLength eingeführt.
Wahrscheinlich wurde die Aufgabe der Code-Beschleunigung bei der Arbeit mit Strings gelöst.
Die Aufgabe, den Code zu beschleunigen, wurde gelöst, und niemand kümmert sich darum, dass die Hälfte der Funktion nun NULL-Zeichen in Strings verarbeitet und die andere Hälfte nicht.
Das Ergebnis:
Dies ist meine subjektive Meinung, wenn ich irgendwo falsch liege, helfe ich gerne weiter.
StringLen arbeitete früher mit O(n) bis zum ersten NULL-Zeichen (0x0000) in der Zeichenkette, aber jetzt arbeitet es mit O(1).
DieLänge von Zeichenketten konnte immer über StringSetCharacter(str, pos, 0x00) abgeschnitten werden, aber aus irgendeinem Grund wurde StringSetLength eingeführt.
Wahrscheinlich wurde die Aufgabe der Code-Beschleunigung bei der Arbeit mit Strings gelöst.
Die Aufgabe, den Code zu beschleunigen, wurde gelöst und niemand kümmert sich darum, dass die Hälfte der Funktion nun NULL-Zeichen in Strings verarbeitet und die andere Hälfte nicht.
Das Ergebnis:
StringLen arbeitete früher mit O(n) bis zum ersten NULL-Zeichen (0x0000) in der Zeichenkette, jetzt arbeitet es mit O(1)
An die Entwickler:
Bitte fügen Sie die Möglichkeit hinzu, erzwungene Codegenerierung für den Standard-Zuweisungsoperator (Kopierkonstruktor) anzugeben:
Es ist ein bisschen kompliziert. Es ist einfacher, die Analogie des Standardkonstruktors zu verwenden:
1) Jeder Zuweisungsoperator überschreibt den Standard-Zuweisungsoperator
2) jeder Kopieroperator überschreibt den Standard-Kopieroperator
Nur teilweise korrigierte Fehler ... warum nicht!?
Da MQL keine konsistente Idee hat, wenn es um Strings mit NULL-Zeichen geht, ist dies das Problem.
Zum Beispiel unterstützt StringToShortArray NULL-Zeichen in einer Zeichenkette, während die umgekehrte Funktion ShortArrayToString dies nicht tut...
Dies hat zur Folge, dass mehr Zeit auf das Aufspüren von Fehlern und die Suche nach Umgehungsmöglichkeiten verwendet wird, als auf die Lösung bestimmter Aufgaben.
Es ist ein bisschen kompliziert. Es ist einfacher, die Analogie des Standardkonstruktors zu verwenden:
1) Jeder Zuweisungsoperator überschreibt den Standard-Zuweisungsoperator
2) jeder Kopieroperator hebt den Standard-Kopieroperator auf
Ich brauche keine Rückgängigmachung, ich brauche im Gegenteil eine erzwungene Erzeugung.
MQL hat keine Funktionalität für tiefe Kopien von komplexen Typen, und in Zuweisungsoperator und Kopierkonstruktor sind sie standardmäßig implementiert.
Da es in MQL kein einheitliches Konzept für den Umgang mit Strings mit NULL-Zeichen gibt, ist dies das Problem.
Zum Beispiel unterstützt StringToShortArray NULL-Zeichen in einer Zeichenkette, während seine umgekehrte Funktion ShortArrayToString dies nicht tut...
Einerseits ja, andererseits heißt es in der Dokumentation ausdrücklich: "oder bis zum Erreichen der Klemme 0".
Einerseits ja, andererseits wird in der Dokumentation ausdrücklich darauf hingewiesen (dass dies nicht der Fall ist)
UndStringToShortArray sagt das Gleiche:
Dies hindert ihn jedoch nicht daran, NULL-Zeichen in der Zeichenkette angemessen zu behandeln.