Fehler, Irrtümer, Fragen - Seite 3040

 
Andrei Trukhanovich:

Dies ist schon seit langem der Fall. mql-Strings mögen keine Null-Zeichen innerhalb einer Zeichenkette und in Literalen, auch in Funktionen.

Der einzige normale Weg ist, drei Zeichenketten mit einer abschließenden Null in ein Array zu übersetzen.

Das heißt, dieses Verhalten, so wie es jetzt ist, wurde vor ein paar Jahren absichtlich herbeigeführt. Ich kenne die Gründe nicht.

Und welche Funktion außer StringToCharArray funktioniert nicht korrekt mit internen Nullen?

Zum Beispiel StringToShortArray - funktioniert ohne Fehler.

StringCompare funktionierte früher nicht richtig, aber das wurde vor langer Zeit behoben.

Was StringLen betrifft, so funktioniert es nicht korrekt.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wanzen, Wanzen, Fragen

A100, 2019.05.15 13:45

Nur teilweise korrigierte Fehler .... warum nicht!? Meiner Erinnerung nach funktionierte StringLen immer korrekt (zumindest in x32)

 
A100:

Ich erinnere mich nicht genau, irgendwann wurde eine Zeichenkette mit einer Null darin auf Null abgeschnitten, vielleicht mit stringconcatenate, vielleicht mit einfachen Stringoperationen.

 

Tolles Forum, ich habe heute Nachmittag eine Antwort geschickt. Die Antwort selbst ging verloren.

Montag, Mitte des Nachmittags...


 

Mehrere Terminals werden auf ein Minimum reduziert. Allerdings gibt jedes Terminal die Warnungen in seinem eigenen Fenster aus, das nicht zusammengelegt wird.

Woher weiß ich, welches Alarmfenster zu welchem Terminal gehört?

 
fxsaber:

Mehrere Terminals werden auf ein Minimum reduziert. Allerdings gibt jedes Terminal die Warnungen in seinem eigenen Fenster aus, das nicht zusammengelegt wird.

Wie kann ich erkennen, welches Alarmfenster zu welchem Terminal gehört?

Ich weiß nichts über die eindeutige Terminal-ID, aber Sie können der MeldungAccountInfoString(ACCOUNT_COMPANY) hinzufügen. Ich glaube nicht, dass jemand mehrere MT5-Instanzen gleichzeitig bei ein und demselben Maklerunternehmen angemeldet haben wird, obwohl es hypothetisch gesehen durchaus sinnvoll sein könnte, wenn man verschiedene Konten desselben Maklers betreuen muss. In diesem Fall könnte (zumindest)AccountInfoInteger(ACCOUNT_LOGIN) oderAccountInfoString(ACCOUNT_SERVER) funktionieren.

 
x572intraday:

Ich weiß nichts über eindeutige Terminal-IDs, aber Sie könnenAccountInfoString(ACCOUNT_COMPANY) in die Meldung aufnehmen. Ich glaube nicht, dass irgendjemand mehrere MT5-Instanzen gleichzeitig bei demselben Maklerunternehmen angemeldet hat, obwohl es sich hypothetisch gesehen durchaus lohnen könnte, wenn Sie verschiedene Konten desselben Maklers betreuen müssen. In diesem Fall genügt (im schlimmsten Fall)AccountInfoInteger(ACCOUNT_LOGIN) oderAccountInfoString(ACCOUNT_SERVER).

Ja, Sie können beliebige Identifikationsdaten in Ihre Ausschreibungen eingeben. Die Frage bezieht sich jedoch auf den allgemeinen Fall.

 
A100:

Welche andere Funktion als StringToCharArray funktioniert nicht korrekt mit internen Nullen?

Beispielsweise funktioniert StringToShortArray ohne Fehler.

StringCompare funktionierte früher nicht richtig, aber das wurde vor langer Zeit behoben.

Wie bei StringLen


Du hast recht, ich habe das Verhalten von StringToCharArray geändert, jetzt ist es die ganze Länge der Zeichenkette, nicht bis zum ersten '\0' Zeichen

 
Ilyas:

Du hast Recht, das Verhalten von StringToCharArray wurde geändert, jetzt auf die volle Länge der Zeichenkette, nicht bis zum ersten '\0' Zeichen

Danngibt es nur einen Unterschiedzwischen StringToCharArray undStringToShortArray:

Forum on Trading, Automated Trading Systems and Strategy Testing

Errors, Bugs, Issues

A100

, 2021.05.25 00:16
void OnStart()
{
    string text = "ABC";
    const int start = 0, count = 0;
    uchar array1[]; int n1 = StringToCharArray(  text, array1, start, count );
    short array2[]; int n2 = StringToShortArray( text, array2, start, count );
    Print( n1, ":", n2 );
}

Ergebnis: 4:0

Erwartet: 0:0

 
A100:
Dannbleibt nurnoch ein Unterschied zwischenStringToCharArray undStringToShortArray:

Das Verhalten ist gleich geblieben.


Zusätzlich: In naher Zukunft werden Arrays und Strings durch Methoden ergänzt, z.B:

str.ToCharArray(char_arr, from_position, symbol_count);
str.Length();

arr.Size();
string str = char_arr.ToString( code_page );

if(!obj_arr.Push( constructor_parameters ))
   CriticalError("failed to add element");

obj_arr.Sort( compare_func_ptr, context );

obj_arr.Select( uint_result_index_array, filter_func_ptr, context );
 
Ilyas:

in naher Zukunft werden Arrays und Strings durch Methoden ergänzt werden

Immer weniger Gemeinsamkeiten mit MQL4...