Errori, bug, domande - pagina 3040

 
Andrei Trukhanovich:

Questo è stato il caso per molto tempo. Le stringhe mql non amano molto i caratteri nulli all'interno di una stringa e nei letterali, anche nelle funzioni.

L'unico modo normale è quello di tradurre tre stringhe con un null finale in un array.

Cioè questo comportamento come è ora è stato fatto deliberatamente qualche anno fa. Non conosco le ragioni.

E quale funzione oltre a StringToCharArray non funziona correttamente con i nulli interni?

Per esempio StringToShortArray - funziona senza errori.

StringCompare funzionava in modo errato, ma questo è stato risolto molto tempo fa.

Per quanto riguarda StringLen, non funziona correttamente.

Forum sul trading, sistemi di trading automatico e test di strategia

Bug, bug, domande

A100, 2019.05.15 13:45

Solo errori parzialmente corretti .... perché no!? Nella mia memoria StringLen ha sempre funzionato correttamente (almeno in x32)

 
A100:

Non ricordo esattamente, a un certo punto una stringa con un null all'interno veniva troncata a zero, forse stringconcatenate, forse con semplici operazioni sulle stringhe.

 

Grande forum, ho avuto modo di inviare una risposta questo pomeriggio. La risposta stessa si è persa.

Lunedì, metà pomeriggio...


 

Diversi terminali sono ridotti al minimo. Tuttavia, ogni terminale dà gli avvisi alla propria finestra di avviso - non collassata.

Come faccio a sapere quale finestra di avviso corrisponde a quale terminale?

 
fxsaber:

Diversi terminali sono ridotti al minimo. Tuttavia, ogni terminale dà gli avvisi alla propria finestra di avviso - non collassata.

Come posso capire quale finestra di avviso corrisponde a quale terminale?

Non so nulla dell'ID unico del terminale, ma puoi aggiungere all'avvisoAccountInfoString(ACCOUNT_COMPANY). Non credo che qualcuno avrà diverse istanze MT5 connesse simultaneamente a una stessa società di brokeraggio, anche se ipoteticamente potrebbe essere ancora ragionevole se uno ha bisogno di sedersi su diversi conti dello stesso broker. In questo caso (come minimo)AccountInfoInteger(ACCOUNT_LOGIN) oAccountInfoString(ACCOUNT_SERVER) potrebbero funzionare.

 
x572intraday:

Non so nulla dell'ID unico del terminale, ma puoi aggiungereAccountInfoString(ACCOUNT_COMPANY) all'avviso. Non credo che qualcuno avrà più istanze MT5 connesse alla stessa società di brokeraggio allo stesso tempo, anche se ipoteticamente potrebbe ancora essere utile se avete bisogno di sedersi su diversi conti dello stesso broker. In questo caso (al peggio)AccountInfoInteger(ACCOUNT_LOGIN) oAccountInfoString(ACCOUNT_SERVER) andranno bene.

Sì, puoi mettere qualsiasi dato identificativo nei tuoi avvisi. Ma la domanda riguarda il caso generale.

 
A100:

Quale funzione oltre a StringToCharArray non funziona correttamente con gli zeri interni?

Per esempio, StringToShortArray funziona senza errori.

StringCompare funzionava in modo errato, ma questo è stato risolto molto tempo fa.

Come per StringLen


Hai ragione, ho cambiato il comportamento di StringToCharArray, ora è l'intera lunghezza della stringa, non fino al primo carattere '0'.

 
Ilyas:

Hai ragione, ho cambiato il comportamento di StringToCharArray, ora per l'intera lunghezza della stringa, non fino al primo carattere '0'.

Allorac' è solo una differenzatra StringToCharArray eStringToShortArray:

Forum sul trading, sistemi di trading automatico e test di strategia

Errori, bug, problemi

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 );
}

Risultato: 4:0

Atteso: 0:0

 
A100:
Allorarimane solo una differenza traStringToCharArray eStringToShortArray:

Ha reso il comportamento lo stesso.


Inoltre: nel prossimo futuro, gli array e le stringhe saranno integrati con metodi, ad esempio

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:

nel prossimo futuro, gli array e le stringhe saranno integrati da metodi

Sempre meno in comune con MQL4...