Fehler, Irrtümer, Fragen - Seite 2566
![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
Bei diesem Casting gibt es keinen Datenverlust. Entweder ist sie 0 oder sie ist nicht 0.
Ein anderer Fall ist, wenn double -> ein beliebiger Integer-Typ (bis einschließlich int32)
Meiner Meinung nach spielen Sie ein bisschen zu sehr mit den Warnungen, es mangelt an Konsistenz in Ihrem Urteil
Meiner Meinung nach haben Sie es mit den Warnungen etwas übertrieben, es mangelt an Konsistenz in der Beurteilung.
Einverstanden
Auch hiergibt es keinen Datenverlust in diesem Sinne(entweder 0 oder nicht 0)
aber es gibt eine Warnung. Es wurde ein einheitlicher Ansatz erwartet
Ergebnis des Versuchs, von einer statischen Funktion derselben Klasse aus auf eine Eigenschaft einer Klasseninstanz zuzugreifen:
Der Compiler war vorher stumm.Eine leere Zeichenkette wird nicht mit einem Terminal Null initialisiert.
Ergebnis
Erwartet
Hinweis in der Hilfe für die Funktion StringInit
In der Tat gibt es keine Verteilung.
D.h. Aufteilung auf diese Weise, zehn Räume
ist nicht dasselbe wie.
Der rot markierte Hilfetext entspricht nicht dem logischen Verhalten.
Meiner Meinung nach übertreibst du es mit den Warnungen, du bist nicht konsequent genug in deiner Beurteilung.
Warnungen funktionieren nicht bei booleschen Operationen, jetzt habe ich zufällig einen Tippfehler in meinem Code bemerkt, also habe ich ihn reproduziert:
Initialisiert eine leere Zeichenkette nicht mit einem Terminal Null.
Ergebnis
Erwartet
Hinweis in der Hilfe für die Funktion StringInit
In der Tat gibt es keine Verteilung.
D.h. Aufteilung auf diese Weise, zehn Räume
ist nicht dasselbe wie.
Und es scheint nicht der Logik des Verhaltens zu entsprechen, die im Hilfetext rot hervorgehoben ist.
Sie haben die Funktion StringBufferLen übersehen - sie gibt die Größe des zugewiesenen Puffers zurück. StringLen gibt die Länge der Zeichenkette zurück, d.h. bis zum Endzeichen bzw., wenn dieses ganz am Anfang steht, die Länge 0. Buffer != string.
Sie haben die Funktion StringBufferLen übersehen - sie gibt die Größe des zugewiesenen Puffers zurück. StringLen gibt die Länge der Zeichenkette zurück, d.h. bis zum Endzeichen bzw., wenn dieses ganz am Anfang steht, Länge 0. Buffer != string.
Sonst kennt er sich selbst nicht.
Sie haben die Funktion StringBufferLen übersehen - sie gibt die Größe des zugewiesenen Puffers zurück.
StringLen gibt die Länge der Zeichenkette zurück, d.h. bis zum Endzeichen bzw., wenn dieses ganz am Anfang steht, Länge 0. Buffer != string.
Damit ist klar, dass es sich um die Initialisierung einer Zeichenkette mit terminalen Nullen handelt.
Warum nicht stringInit(str, 10, 0); mit zehn terminalen Nullen füllen? und die tatsächliche Länge der Zeichenkette zurückgeben.
Wenn Sie eine leere Zeichenkette initialisieren wollen, ohne sie zu füllen! zum Beispiel mit 100 Zeichen,
dann entweder 100 Leerzeichen als str = "many pokes at the keyboard", oder initialize rubbish StringInit(str, 100, 65)
Ich verstehe nicht, warum ich mit Müll initialisieren muss, es gibt schon genug davon ))
Das ist verständlich, denn es geht darum, die Zeichenkette mit terminalen Nullen zu initialisieren.
Warum nicht StringInit(str, 10, 0); mit zehn Nullen auffüllen? und die tatsächliche Länge der Zeichenkette zurückgeben.
Wenn Sie eine leere Zeichenkette initialisieren wollen, ohne sie zu füllen! zum Beispiel mit 100 Zeichen,
dann entweder 100 Leerzeichen als str = "many pokes at the keyboard", oder Quatsch initialisieren StringInit(str, 100, 65)
Ich verstehe nicht, warum ich es mit Müll initialisieren muss, es gibt schon genug davon ))
Wie kommen Sie darauf, dass sie nicht ausgefüllt ist? Es ist nur so, dass die Länge in der µl-Zeichenkette nicht gespeichert wird, sie wird vom Terminal Null erkannt.
Nein?
Und wenn Sie Nullen brauchen, gibt es irgendwo in den Eingeweiden von µl std eine String-Klasse.
Wie kommen Sie darauf, dass sie nicht ausgefüllt ist? Es ist nur so, dass die Länge in der µl-Zeichenkette nicht gespeichert wird, sie wird vom Terminal Null erkannt.
nicht wahr?
Und wenn Sie Nullen brauchen, gibt es irgendwo in den Eingeweiden der µl std eine String-Klasse.
Nee... Auf diese Weise kommt auch null zurück. Der dritte Parameter, ushort, erfordert einen ganzzahligen Zeichencode.
Wenn ich als str = " " initialisiere; und dann Daten von dll übergebe, ist alles in Ordnung.
Aber wenn ich sie als StringInit(str, 10, 0) initialisiere, kommen keine Daten an. Das liegt daran, dass der Code keinen Speicher für eine Zeichenfolge mit der erforderlichen Größe zuweist.
Wenn ich Code für Raum hatte, würde wahrscheinlich gearbeitet haben, aber das habe ich nicht gefunden, wie Code in verschiedenen Tabellen.
Wir müssen Speicher für die Anzahl der zukünftigen Zeichen zuweisen, die dann in die bereits initialisierte leere Zeichenkette übergehen werden.
Aber Blödsinn, den String zu initialisieren, nicht kommelpho.
StringInit(str, 100, 0); sollte mit terminalen Nullen gefüllt werden und die Länge 100 zurückgeben.