Errores, fallos, preguntas - página 2973

 
Denis Kirichenko:

Estimados desarrolladores, por favor revisen si <Arrays\ArrayObj.mqh> es correcto:

Técnicamente no hay ningún error. En este caso lo virtual está implícito, aunque no se especifique explícitamente

 
A100:

Técnicamente, no hay ningún error. En este caso lo virtual está implícito, aunque no se diga explícitamente

Gracias. Pero me gustaría una cierta uniformidad sintáctica. Después de todo, ya tenemos uno, por ejemplo:

class CArrayDouble : public CArray
  {

   ...

   protected:
   virtual void      QuickSort(int beg,int end,const int mode=0);
  }

//+------------------------------------------------------------------+

class CArrayString : public CArray
   {

   ...

   protected:
   virtual void      QuickSort(int beg,int end,const int mode=0);
  }

 

La carpeta del mercado está llena de expertos

11

pero sólo puedo probar los 6 primeros

11

¿Qué ocurre y qué debo hacer?

 

CryptDecode(CRYPT_BASE64 error

int OnInit()
{
   string text="";
   string res="";
   string key="fuyTkH3cd63K9Htrl2xdFgjerPjmla8h";

   text="indicator_chart_window";
   if(!CryptEncodeA(text,key,res))
      Print("Error: Encode:",GetLastError());

   Print(res);

   text="vj9jDk+GxxB4W1zQc4/rC4OPvttMcgcF5ZFVC7m7l50=";
   if(!CryptDecodeA(text,key,res))
      Print("Error: Decode:",GetLastError());

   Print(res);
   return(INIT_SUCCEEDED);
}

//------------------------------------------------------------------
bool CryptEncodeA(string InputText,string key,string &Output) {
   uchar scr[];
   uchar dst[];
   uchar res[];
   uchar key_aes256[];
   uchar key_base64[];
   StringToCharArray(InputText,scr);
   StringToCharArray(key,key_aes256);
   if(CryptEncode(CRYPT_AES256,scr,key_aes256,dst)==0) return(false);
   if(CryptEncode(CRYPT_BASE64,dst,key_base64,res)==0) return(false);
   Output = CharArrayToString(res);
   return(true);
}
//--
bool CryptDecodeA(string InputText,string key,string &Output) {
   uchar scr[];
   uchar dst[];
   uchar res[];
   uchar key_base64[];
   uchar key_aes256[];
   StringToCharArray(InputText,scr);
   StringToCharArray(key,key_aes256);
   if(CryptDecode(CRYPT_BASE64,scr,key_base64,dst)==0) return(false);
   if(CryptDecode(CRYPT_AES256,dst,key_aes256,res)==0) return(false);
   Output = CharArrayToString(res);
   return(true);
}

---

La funciónCryptEncodeA crea una línea que CryptDecodeA no puede decodificar y genera el error "4029" en MT4, "4006" en MT5

Línea de registro: vj9jDk+GxxB4W1zQc4/rC4OPvttMcgcF5ZFVC7m7l50=

Si quitas el último "=", se descifra y no hay error.

En este caso, php descifra normalmente y correctamente:

$secret_key = 'fuyTkH3cd63K9Htrl2xdFgjerPjmla8h';

$s = "indicator_chart_window";
$res = base64_encode(openssl_encrypt($s,"AES-256-ECB",$secret_key,OPENSSL_RAW_DATA));
echo $res.'<br>';

$s= "vj9jDk+GxxB4W1zQc4/rC54fEtkLAsAONkyeprqmMlw=";
$res = openssl_decrypt(base64_decode($s),"AES-256-ECB",$secret_key,OPENSSL_ZERO_PADDING|OPENSSL_RAW_DATA);
echo $res;

---

Ciframos la misma línea en el servidor: "ventana_gráfica_del_indicador"

Obtenemos el resultado:"vj9jDk+GxxB4W1zQc4/rC54fEtkLAsAONkyeprqmMlw="

Inserte esta línea en el código mql y el error de nuevo - eliminar el último "=" y todo funciona bien.

---

Poner alguna clave de encriptación aleatoria, el servidor obtuvo la cadena: "8CpXr3OlVlVhGs41syHA0+HqZKnatswQjRWn2fKYN4qN4=="

Inserté la cadena en el código mql - error, eliminé un "=" dejando sólo uno - funcionó bien (cuál fue la clave que creó la cadena con dos iguales - no pude reproducirlo)

Quiero una respuesta, ¡quizás estoy haciendo algo mal!

 

No se libera memoria durante la optimización.

La captura de pantalla muestra el consumo de memoria cuando se utiliza un solo agente durante la optimización:

El error está relacionado con un diseño similar al de abajo en el código, el error no aparece aquí:

input int ii;//Для оптимизации
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class My_class
  {
public:
   struct s_Frame_info
     {
      ulong          event_index;
      uchar          frame_id;
      int            data_size;
     };
   struct s_Frame
     {
      s_Frame_info   frame_info;
      uchar          data[];
     };
   s_Frame           _data_local[];

   void              GGG()
     {
      ArrayResize(_data_local,1024);
      for(int i1=0; i1<1024; i1++)
        {
         int len1=ArrayRange(_data_local[i1].data,0);
         ArrayResize(_data_local[i1].data,len1+1,128*1024);
        }
     }
  } *my_class;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   my_class=new My_class();
   my_class.GGG();
   return INIT_SUCCEEDED;
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   my_class._data_local[0].data[0]=0;
   delete my_class;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  }
//+------------------------------------------------------------------+

¿Alguna opinión al respecto?

 
Denis Nikolaev:

La carpeta del mercado está llena de expertos

pero sólo puedo probar los 6 primeros

¿Qué ocurre y qué debo hacer?

Esto es un cuatro. Han llegado al límite del número.

 

¿Por qué se compila test.mq5 en lugar de test.mqproj? mientras el proyectotest.mqprojestá cerrado

Sólo borrando el archivotest.mqproj todo vuelve a la normalidad
 

¿Es posible subir un archivo png a la carpeta MQL/Imágenes en codebase?

Los archivos png parecen estar permitidos, pero por alguna razón no son enviados al servidor - después de enviar el formulario los archivos png no están en la lista de subidos.

 
Artyom Trishkin:

Eso es un cuatro. Ha llegado al límite.

Gracias, Artem. La limpieza ha ayudado.

 
Stanislav Korotky:

¿Es posible subir un archivo png a la carpeta MQL/Imágenes en codebase?

Los archivos png parecen estar permitidos, pero por alguna razón no son enviados al servidor - después de enviar el formulario los archivos png no están en la lista de subidos.

Añadiré más. He archivado todos los archivos como con EasyAndFastGUI (https://www.mql5.com/ru/code/19703) y los he subido a MQL5/Images. El archivo zip se ha registrado en el servidor, pero la compilación sigue sin tener éxito: el servidor dice que no ve los archivos de recursos. Pregunta: ¿Cómo se compila EasyAndFastGUI?

¿O tengo que pedir a los moderadores que vuelvan a pulsar manualmente el envío(https://www.mql5.com/en/code/33770/ - públicamente no disponible)?

EasyAndFastGUI - библиотека для создания графических интерфейсов
EasyAndFastGUI - библиотека для создания графических интерфейсов
  • www.mql5.com
Библиотека EasyAndFastGUI дает возможность создавать графические интерфейсы для своих MQL-программ.