Errores, fallos, preguntas - página 3040

 
Andrei Trukhanovich:

A las cadenas mql no les gustan los caracteres nulos dentro de una cadena y en los literales, también en las funciones.

La única forma normal es traducir tres cadenas con un nulo final en un array.

Es decir, este comportamiento, tal y como es ahora, se hizo deliberadamente hace unos años. No sé las razones.

¿Y qué función además de StringToCharArray no funciona correctamente con los nulos internos?

Por ejemplo StringToShortArray - funciona sin errores.

StringCompare solía funcionar de forma incorrecta, pero esto se arregló hace tiempo.

En cuanto a StringLen, no funciona correctamente.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bichos, errores, preguntas

A100, 2019.05.15 13:45

Sólo errores parcialmente corregidos .... ¿¡Por qué no!? En mi memoria StringLen siempre ha funcionado correctamente (al menos en x32)

 
A100:

No recuerdo exactamente, en un momento dado una cadena con un null dentro se truncaba a cero, tal vez stringconcatenate, tal vez con simples operaciones de cadena.

 

Gran foro, consiguió en el envío de una respuesta esta tarde. La respuesta en sí se perdió.

Lunes, a media tarde...


 

Se minimizan varios terminales. Sin embargo, cada terminal emite alertas a su propia ventana de alertas, no colapsada.

¿Cómo puedo saber qué ventana de alerta corresponde a cada terminal?

 
fxsaber:

Se minimizan varios terminales. Sin embargo, cada terminal emite alertas a su propia ventana de alertas, no colapsada.

¿Cómo puedo saber qué ventana de alerta corresponde a cada terminal?

No sé nada sobre el ID de terminal único, pero puedes añadir a la alertaAccountInfoString(ACCOUNT_COMPANY). No creo que nadie tenga varias instancias de MT5 conectadas simultáneamente a una misma empresa de corretaje, aunque hipotéticamente podría ser razonable si uno necesita estar en diferentes cuentas del mismo corredor. En este caso (como mínimo) podría funcionarAccountInfoInteger(ACCOUNT_LOGIN) oAccountInfoString(ACCOUNT_SERVER).

 
x572intraday:

No sé nada sobre el ID de terminal único, pero puedes añadirAccountInfoString(ACCOUNT_COMPANY) a la alerta. No creo que nadie tenga varias instancias de MT5 conectadas a la misma empresa de corretaje al mismo tiempo, aunque hipotéticamente podría valer la pena si necesitas estar en diferentes cuentas del mismo corredor. En este caso (en el peor de los casos) serviríaAccountInfoInteger(ACCOUNT_LOGIN) oAccountInfoString(ACCOUNT_SERVER).

Sí, puedes poner cualquier dato de identificación en tus Alertas. Pero la pregunta es sobre el caso general.

 
A100:

¿Qué función además de StringToCharArray no funciona correctamente con ceros internos?

Por ejemplo, StringToShortArray funciona sin errores.

StringCompare solía funcionar de forma incorrecta, pero esto se arregló hace tiempo.

En cuanto a StringLen


Tienes razón, he cambiado el comportamiento de StringToCharArray, ahora es toda la longitud de la cadena, no hasta el primer carácter '\0'

 
Ilyas:

Tienes razón, he cambiado el comportamiento de StringToCharArray, ahora hasta la longitud completa de la cadena, no hasta el primer carácter '\0'

Entonces sólo hay una diferenciaentre StringToCharArray yStringToShortArray:

Foro de Trading, Sistemas de Trading Automatizados y Pruebas de Estrategias

Errores, Bugs, Problemas

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

Resultado: 4:0

Esperado: 0:0

 
A100:
Entonces sóloqueda una diferencia entreStringToCharArray yStringToShortArray:

El comportamiento es el mismo.


Además: en un futuro próximo, las matrices y las cadenas se complementarán con métodos, por ejemplo

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:

en un futuro próximo, las matrices y las cadenas se complementarán con métodos

Cada vez menos en común con MQL4...