Обсуждение статьи "Библиотека для простого и быстрого создания программ для MetaTrader (Часть XX): Создание и хранение ресурсов программы"

 

Опубликована статья Библиотека для простого и быстрого создания программ для MetaTrader (Часть XX): Создание и хранение ресурсов программы:

В статье рассмотрим способ хранения данных в исходниках программы и создание из них звуковых и графических файлов. Часто при создании программы, нам требуется использовать звуки и изображения. В языке MQL есть несколько возможностей использования таких данных.

После компиляции советника он выведет в журнал записи о результатах создания файлов, проиграет звук упавшей монетки и выведет в правый нижний угол экрана рисунок светодиода, состоящий из двух изображений. Переключить изображения можно щелчком мыши по изображению светодиода (ведь по сути — это кнопка, имеющая два состояния вкл/выкл)



Как видим — всё создаётся, в журнал выводятся сообщения об успешном создании файлов, изображение светодиода переключает цвет при щелчке по изображению, а если открыть каталог данных терминала (в терминале пункт меню Файл --> Открыть каталог данных), зайти в папку MQL5\Files\DoEasy\Resource\, то там будет две подпапки — Images и Sounds, в которых лежат все только что созданные файлы.

Автор: Artyom Trishkin

 

У Вас 1 байт кодируется 5 символами ("0xNN,").

Для плотной упаковки бинарных данных в текст используют Base64. У меня в тесте получилось 1.36 символа на байт.

Вот пример

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:

У Вас 1 байт кодируется 5 символами ("0xNN,").

Для плотной упаковки бинарных данных в текст используют Base64. У меня в тесте получилось 1.36 символа на байт.

Вот пример

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


Так тут же о другом...
 
Artyom Trishkin:
Так тут же о другом...

А, имеете в виду, что у Вас данные для компиляции, и в ex5 будут занимать 1:1. Да, здесь упаковывать не нужно.

 
Edgar:

А, имеете в виду, что у Вас данные для компиляции, и в ex5 будут занимать 1:1. Да, здесь упаковывать не нужно.

Позже будет добаалено хранение в ресурсах программы - там компилятор сжимает данные.
Причина обращения: