Discussão do artigo "Biblioteca para criação simples e rápida de programas para MetaTrader (Parte XX): criação e armazenamento de recursos de programas"

 

Novo artigo Biblioteca para criação simples e rápida de programas para MetaTrader (Parte XX): criação e armazenamento de recursos de programas foi publicado:

No artigo, veremos como armazenar dados no código fonte de um programa e como criar arquivos de som e gráficos a partir dele. Muitas vezes, ao criar um programa, precisamos usar sons e imagens. Na linguagem MQL, existem várias maneiras de usar esse tipo de dados.

Após compilar o EA, ele exibe no lo registros sobre os resultados da criação de arquivos, reproduz o som de uma moeda que cai e exibe um padrão de LED de duas imagens no canto inferior direito da tela. Podemos alternar as imagens clicando na imagem do LED (afinal, de fato, este é um botão que possui dois estados lig/deslig)



Como se pode ver, tudo está pronto, as mensagens sobre a criação bem-sucedida de arquivos são exibidas no log, a imagem do LED muda de cor quando a imagem é clicada e, se abrirmos o diretório de dados do terminal (no terminal, item de menu Arquivo -> Abrir diretório de dados), vamos para a pasta som de uma moeda descartada, haverá duas subpastas - Imagens e Sons - contendo todos os arquivos recém-criados.

Autor: Artyom Trishkin

Artyom Trishkin
Artyom Trishkin
  • www.mql5.com
Perfil do Trader
 

Você tem 1 byte codificado com 5 caracteres ("0xNN,").

O Base64 é usado para compactar densamente dados binários em texto. Obtive 1,36 caracteres por byte em meu teste.

Aqui está um exemplo

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:

Você tem 1 byte codificado com 5 caracteres ("0xNNN,").

O Base64 é usado para compactar densamente dados binários em texto. Em meu teste, obtive 1,36 caracteres por byte.

Aqui está um exemplo

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


Então é disso que se trata aqui...
 
Artyom Trishkin:
Não é disso que estamos falando aqui...

Ah, você quer dizer que tem dados para compilação e que no ex5 ocupará 1:1. Sim, não há necessidade de empacotar aqui.

 
Edgar:

Ah, você quer dizer que tem dados para compilação e que no ex5 ocuparão 1:1. Sim, não há necessidade de empacotá-los aqui.

Mais tarde, o armazenamento nos recursos do programa será adicionado - o compilador comprime os dados lá.