Errores, fallos, preguntas - página 1812

 
Sergei Vladimirov:

"¡Doctor, tengo algo que me duele!" © )

Dame un ejemplo de esa expresión. Uno reproducible. Entonces podrás decir algo.

ulong PackMagic(int bs, int type, int frac, int ll)//bs=0 - sell, bs=1 - buy (в смысле ll), type - это тип FPST
     {
        int d1;
        ulong i, frac1=frac, ll1=ll, type1=type;
        
        i=1; d1=10;
        while (ll>=d1) {d1=d1*10; i=i+1;}
              
        if (type==0 || type==2) return (frac1+ll1*Pow10frac_length+i*Pow10(frac_length+i)+
         type1*Pow10(frac_length+i+1)+bs*Pow10(frac_length+i+2)+Id1_class*Pow10(frac_length+i+3));
        else return(ll1+i*Pow10(i)+type1*Pow10(i+1)+bs*Pow10(i+2)+Id1_class*Pow10(i+3));
     }    
    
     ulong Pow10(ulong power) // power>0
     {
        ulong r=10;
        if (power==0) return 1;
        for (ulong i=2; i<=power; i++) r=r*10;
        return r;
     }

El problema está en la función PackMagic. variables externas int frac_length=2; int Pow10frac_length=100; int Id1_class=1;.

 
Sergey Kudryavtsev:
El problema está en la función PackMagic. variables externas int frac_length=2; int Pow10frac_length=100;.
No has proporcionado un ejemplo del error. ¿A qué valores de los argumentos devuelve esta función un valor erróneo (cuál?) y cuál debería ser el resultado correcto?
 
Sergei Vladimirov:
No has dado un ejemplo de error. ¿A qué valores de los argumentos devuelve esta función el valor incorrecto (cuál?) y cuál debería ser el resultado correcto?

Por ejemplo:

Id1_class=1, bs=0, type=0, frac=99, ll=1, frac_length=2, Pow10frac_length=100, return devuelve 11299.

Debería ser 1001199. En Expert, funciones en clase, cuenta demo en Open.

No es un hecho que siempre se devuelva el 11299 en caso de error.

 
No es reproducible. Con estos parámetros, la función devuelve de forma estable 1001199. Tampoco hay errores en la propia función. Por lo tanto, no hay nada que decir. Lo más probable es que el problema en su Asesor Experto no esté en esta función, sino en otro lugar. Los valores de los parámetros pasados a la función son diferentes de los que usted espera. En consecuencia, el resultado es diferente al esperado.
 

Está sonando. Escribí su código a la secuencia de comandos, dio el valor correcto (1001199) cuando se ejecuta en modo de depuración, pero si compilo la liberación y ejecutarlo desde el árbol en MT5, dio 11199 constantemente. He podido localizar el problema, aquí está el código de reproducción:

int frac_length = 2;

void OnStart()
{
        
        ulong i = 1;

        ulong a1 = Pow10(frac_length + i);
        ulong a2 = Pow10(frac_length + i + 1);
        ulong a3 = Pow10(frac_length + i + 2);
        ulong a4 = Pow10(frac_length + i + 3);
        
        Print(IntegerToString(a1), " ", IntegerToString(a2), " ", IntegerToString(a3), " ", IntegerToString(a4));

}  

ulong Pow10(const ulong power)
{
        ulong r = 10;
        
        if (power == 0)
                return 1;
                
        for (ulong i = 2; i <= power; i++)
                r = r*10;
                
        return r;
}

En el modo de depuración funciona correctamente. Pero al iniciar el lanzamiento desde el navegador en MT5 o bien produce un sinsentido ("1000 10000 100 100 100" en lugar de "1000 10000 100000 1000000") o bien MT5 se cuelga con la carga completa de uno de los núcleos del procesador.

Hay dos maneras de solucionarlo. De cualquiera de estas maneras:

        ulong a1 = Pow10(frac_length + i);
        ulong a2 = Pow10(frac_length + i + (ulong)1);
        ulong a3 = Pow10(frac_length + i + (ulong)2);
        ulong a4 = Pow10(frac_length + i + (ulong)3);

O bien moviendo la variable global frac_length dentro de la función Start().

Efectivamente, se trata de un error del compilador, escriba al Servicio de Atención al Cliente.

 
MT4 comenzó a pesar 1,8 gigabytes (RAM). Se comió toda la UPU, el segundo terminal no se puede encender correctamente. ¿Puedes decirme cómo "limpiar" la RAM de MT?
 

Al pasar por encima de una reseña propia recién publicada para un producto del mercado, aparecen varias sugerencias/acciones. Si seleccionas "editar" y cambias la revisión, aparecerá un error de "No hay derechos" después de hacer clic en "Actualizar".

No se puede crear la solicitud al SR - Seha producido un error.

 
fxsaber:
Al pasar por encima de una reseña propia recién publicada para un producto del Mercado, aparecen varias sugerencias/acciones. Si seleccionas "editar" y cambias la revisión, aparece el error "Sin derechos" después de hacer clic en "Actualizar".

Por favor, especifique el nombre y la versión de su navegador.
En chrome 56.0.2924.87 el vuelo va bien, tanto con como sin refrescar manualmente la página de revisión.

 
fxsaber:

No se puede crear la solicitud al SR - Seha producido un error.

Ya veo, hay que borrar las cookies de www.mql5.com.
Aparentemente ha habido una actualización de los principios de comprobación de fichas anti-cSRF.

En Chrome, puedes hacerlo así:
Presione F12 mientras está en www.mql5.com => en el tablero de instrumentos vaya a Aplicación => Cookies => haga clic en las cookies => borre todas de...
 
Sergey Dzyublik:

Por favor, especifique el nombre y la versión de su navegador.
En Chrome 56.0.2924.87 el vuelo va bien, tanto con como sin refrescar manualmente la página de revisión.

Versión portátilde Chrome45.0.2454.85 + Fragata.
Razón de la queja: