Fehler, Irrtümer, Fragen - Seite 3011
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
Da der 4. Parameter
Ich muss die ersten 3 Zeichen kopieren. Wenn ich die gesamte Zeichenfolge (7 Zeichen einschließlich der Endung 0) kopieren wollte, würde ich -1 angeben. Und wenn ein Teil davon nicht kopiert werden kann, wozu brauche ich dann diesen Parameter?
Dieser Parameter gibt nicht an, wie viele Zeichen kopiert werden sollen, wie der
Substring, sondern wie viele Zeichen an das Array übergeben werden.
d.h. es ist eine C-ähnliche strenge Sicherheitsüberprüfung der Größe der übergebenen Daten.
Mit dieser Größe wird automatisch Speicher für das dynamische Array zugewiesen.
Wenn Sie drei Elemente aus einer Zeichenkette kopieren wollen, müssen Sie sie zuerst aus der Zeichenkette holen,
, und sie dann übergeben, wobei Sie die Größe so viel wie möglich angeben müssen.
Dieser Parameter gibt nicht an, wie viele Zeichen kopiert werden sollen, wie der Substring
, sondern wie viele Zeichen an das Array übergeben werden.
d.h. es handelt sich um eine strenge Sicherheitsprüfung der Größe der übergebenen Daten in C-Größe.
Mit dieser Größe wird automatisch Speicher für das dynamische Array zugewiesen.
Wenn Sie drei Elemente aus einer Zeichenkette kopieren müssen, müssen Sie sie zuerst aus der Zeichenkette holen,
, und dann müssen Sie sie übergeben, wobei Sie die Größe bei der Übergabe angeben.
Sie meinen so?
Ich meine, richtig?
Plus eins als Größe der abschließenden Null.
StringLen gibt die Größe ohne die Null zurück.
Plus eins als Größe der abschließenden Null.
StringLen gibt die Größe ohne Berücksichtigung von Null zurück.
Ich habe ein Beispiel von den Entwicklern gegeben und es funktioniert
Forum für Handel, automatisierte Handelssysteme und Strategietests
Bibliotheken: Bibliothek mit Hash-Funktionen und Konvertierungen
Ilyas, 2021.03.04 15:12
Die Funktion StringToArray fängt die Terminierung Null ein, wenn die Länge der Zeichenkette nicht angegeben ist (historisch)
Daher sollten Sie in der Funktion CryptDecodeA
anstelle von
StringToCharArray(InputText,scr);
Ich habe ein Beispiel von den Entwicklern gegeben und es funktioniert.
Die Verwendung von Bibliotheken war in dieser Frage nicht vorgesehen ))
Das sind die Feinheiten von Bibliotheken.
Plus eins als Größe der abschließenden Null.
StringLen gibt die Größe ohne Berücksichtigung von Null zurück.
Ist StringToCharArray so unfähig, die Zeichenkettenlänge aus einer Zeichenkette abzurufen (vor allem, da Sie nicht brauchen, um es in MQL zu berechnen), dass externe Hilfe in Form eines zusätzlichen Parameters erforderlich ist? Und warum haben andere MQL-Funktionen keine so vermeintlich strenge"C-Prüfung"?
Ist StringToCharArray so unfähig, Stringlänge von String-Typ zu extrahieren (zumal es nicht in MQL berechnet werden muss), dass externe Hilfe in Form eines zusätzlichen Parameters erforderlich ist? Und warum haben andere MQL-Funktionen keine solch angeblich strenge Prüfung?
Diese Frage richtet sich wahrscheinlich nicht an mich, sondern an die Entwickler.
Dieser Parameter wird jedoch für die Zuweisung der Speichergröße für ein dynamisches Array verwendet.
Mit anderen Worten, es ist eine bequeme Möglichkeit, die Zuweisung von Speicher für das Array selbst zu vermeiden.
Außerdem können wir die Korrektheit überprüfen.
Der zusätzliche Größenparameter ist ein Standardverfahren für die strenge Sicherheit in sys.
Bei anderen Funktionen, bei denen die Größe nicht erforderlich ist, fehlt dieser Parameter.
Normalerweise wird dieser Parameter bei der Arbeit mit Arrays verwendet, um Speicher zuzuweisen.
Dies ist in diesem Fall der Fall.
Diese Frage richtet sich wahrscheinlich nicht an mich, sondern an die Entwickler.
Dieser Parameter wird jedoch verwendet, um Speicher für ein dynamisches Array zuzuweisen.
Das bedeutet, dass Sie den Speicher des Arrays nicht selbst zuweisen müssen.
Außerdem wird die Richtigkeit der Angaben überprüft.
Und worin besteht die Prüfung auf Korrektheit? - Nehmen wir an, ich hätte zum Beispiel 0 geschrieben - ein absichtlich falscher Wert.
Und alles wird korrekt kopiert und das Ergebnis: 7 - kein Fehler
Wie wird die Korrektheit überprüft? - Nehmen wir also an, ich setze ihn auf 0, was bekanntermaßen ein falscher Wert ist.
Und alles wird korrekt kopiert. Ergebnis: 7 - kein Fehler
Der Trick liegt in der Funktionsbeschreibung ))
automatischer Fortschritt ))
, was den Benutzer noch mehr verwirrt.
Mit diesem Parameter geben Sie nicht an, wie viele Zeichen Sie als Sub-String kopieren wollen
, sondern wie viele Zeichen an das Array übergeben werden.
help ist mit dieser Auslegung nicht einverstanden.
Die Anzahl der zu kopierenden Array-Elemente. Bestimmt die Länge der Ergebniszeichenkette. Die Voreinstellung ist -1, was bedeutet, dass bis zum Ende des Arrays oder der Klemme 0 kopiert wird. Die Klemme 0 wird auch in das Zielarray kopiert, und die Größe des dynamischen Arrays kann bei Bedarf erhöht werden, um der Stringgröße zu entsprechen. Wenn die Größe des dynamischen Arrays größer ist als die Länge der Zeichenkette, wird die Größe des Arrays nicht verringert.
Die Beschreibung ist natürlich atas - String wird als Array bezeichnet, Array als String, Verwirrung
Anzahl der zu kopierenden Array-(String-)Elemente. Gibt die Länge der resultierenden Zeichenkette (Array) an. Der Standardwert ist -1, was bedeutet, dass bis zum Ende des Arrays (der Zeichenkette) kopiert wird, oder dass der Terminal 0 ist.