文章 "轻松快捷开发 MetaTrader 程序的函数库(第二十部分):创建和存储程序资源"

 

新文章 轻松快捷开发 MetaTrader 程序的函数库(第二十部分):创建和存储程序资源已发布:

本文讨论如何将数据存储在程序的源代码之中,并从中创建音频和图形文件。 在开发应用程序时,我们经常需要音频和图像。 MQL 语言拥有运用此类数据的若干种方法。

编译 EA 之后,它将在日志中显示文件创建结果,播放硬币坠落的声音,并在屏幕的右下角显示由两个图像构成的 LED 图片。 您可以通过单击 LED 来切换图像。 实际上,这是一个拥有两种状态(打开/关闭)的按钮。



如我们所见,一切都按预期进行。 有关成功生成文件的消息出现在日志中,单击 LED 时会更改其颜色,如果我们打开终端数据文件夹(文件->打开数据文件夹)并进入 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 个字符("0xNNN,")。

Base64 用于将二进制数据密集打包成文本。在我的测试中,每个字节有 1.36 个字符。

下面是一个例子

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


原来如此...
 
Artyom Trishkin:
我们说的不是这个...

啊,你是说你有用于编译的数据,并且在 ex5 中将以 1:1 的比例占用。是的,这里不需要打包。

 
Edgar:

啊,您是说您有用于编译的数据,在 ex5 中将占用 1:1。是的,没必要在这里打包。

稍后,程序资源中的存储空间将被添加--编译器会在那里压缩数据。