Discusión sobre el artículo "Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XX): Creación y guardado de los recursos del programa"

 

Artículo publicado Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XX): Creación y guardado de los recursos del programa:

En el artículo, vamos a analizar el guardado de datos en el código fuente del programa, así como la creación de archivos de sonido y audio a partir del mismo. Con frecuencia, al crear un programa, necesitamos usar sonidos e imágenes. En el lenguaje MQL existen varias posibilidades de uso de estos datos.

Después de compilar el asesor, este mostrará en el diario las entradas con los resultados de la creación de los archivos, reproducirá el sonido de una moneda al caer y mostrará en la esquina inferior derecha de la pantalla la figura de un LED que consta de dos imágenes. El usuario podrá alternar las imágenes clicando con el ratón sobre la imagen del LED (en esencia, se trata de un botón que tiene dos estados: on/off)



Como podemos ver, todo funciona como debe: en el diario se muestran los mensajes sobre la creación exitosa de los archivos, la figura del LED alterna el color al clicar sobre la imagen, y si abrimos el catálogo de datos del terminal (en el terminal, punto del menú archivo --> Abrir catálogo de datos) y entramos en la carpeta MQL5\Files\DoEasy\Resource\, encontraremos dos subcarpetas, Images y Sounds, en las que se encuentran todos los archivos recién creados.

Autor: Artyom Trishkin

Artyom Trishkin
Artyom Trishkin
  • www.mql5.com
Perfil del trader
 

Tiene 1 byte codificado con 5 caracteres ("0xNN,").

Base64 se utiliza para empaquetar densamente datos binarios en texto. En mi prueba obtuve 1,36 caracteres por byte.

He aquí un ejemplo

void 
OnStart() {
        uchar result[], result2[];
        uchar key[] = { 0 };
        uchar data[];
        int len1 = StringToCharArray("The quick brown  fox  jumps  over  the  lazy  dog", data);
        
        int len2 = CryptEncode(CRYPT_BASE64, data, key, result);
        Print("len1=", len1, ", len2=", len2, ", result=", CharArrayToString(result));

        CryptDecode(CRYPT_BASE64, result, key, result2);
        Print("result2=", CharArrayToString(result2));
}

len1=50, len2=68, result=VGhlIHF1aWNrIGJyb3duICBmb3ggIGp1bXBzICBvdmVyICB0aGUgIGxhenkgIGRvZwA=


 
Edgar:

Tiene 1 byte codificado con 5 caracteres ("0xNNN,").

Base64 se utiliza para empaquetar densamente datos binarios en texto. En mi prueba obtuve 1,36 caracteres por byte.

He aquí un ejemplo

len1=50, len2=68, result=VGhlIHF1aWNrIGJyb3duICBmb3ggIGp1bXBzICBvdmVyICB0aGUgIGxhenkgIGRvZwA=


Así que de eso se trata aquí...
 
Artyom Trishkin:
No es de eso de lo que estamos hablando...

Ah, te refieres a que tienes datos para compilar y en ex5 ocuparán 1:1. Sí, aquí no hace falta empaquetar.

 
Edgar:

Ah, quieres decir que tienes datos para compilar y en ex5 ocupará 1:1. Sí, no es necesario empaquetarlos aquí.

Más tarde, se añadirá el almacenamiento en los recursos del programa - el compilador comprime los datos allí.