Inno setup 在Inno Setup Pascal脚本中将Base64转换为位图?

Inno setup 在Inno Setup Pascal脚本中将Base64转换为位图?,inno-setup,pascalscript,Inno Setup,Pascalscript,我有一个在Base64中带有一些标志的XML 我想对它们进行解码,将它们显示在安装程序的列表框中,有什么办法吗?要将Base64字符串转换为实际的二进制数据,可以使用 函数CryptStringToBinary( sz:string;cch:LongWord;标志:LongWord;二进制:string;变量大小:LongWord; 跳过:长单词;标记使用:长单词):整数; 外部的CryptStringToBinaryW@crypt32.dllstdcall'; 常数 CRYPT_STRING_

我有一个在Base64中带有一些标志的XML


我想对它们进行解码,将它们显示在安装程序的列表框中,有什么办法吗?

要将Base64字符串转换为实际的二进制数据,可以使用

函数CryptStringToBinary(
sz:string;cch:LongWord;标志:LongWord;二进制:string;变量大小:LongWord;
跳过:长单词;标记使用:长单词):整数;
外部的CryptStringToBinaryW@crypt32.dllstdcall';
常数
CRYPT_STRING_BASE64=$01;
过程LoadBitmapFromBase64(位图:TBitmap;S:字符串);
变量
溪流:尖沙咀;;
缓冲区:字符串;
大小:长字;
开始
Stream:=TStringStream.Create(“”);
尝试
设置长度(缓冲区,(长度(S)第2部分)+1);
尺寸:=长度(S);
如果CryptStringToBinary(S,长度,CRYPT_STRING_BASE64,缓冲区,大小,0,0)=0,则
开始
RaiseException('Error decoding Base64 string');
结束;
Stream.WriteBuffer(缓冲区,大小);
流位置:=0;
LoadFromStream(Stream);
最后
免费;
结束;
结束;


该代码需要Unicode版本的Inno Setup(Inno Setup 6的唯一版本)。无论如何,在21世纪,你不应该使用Ansi版本。尽管讽刺的是,在Ansi版本中实现这一点要容易得多。有关与Inno Setup的Ansi和Unicode版本兼容的
CryptStringToBinary
的用法,请参阅。

虽然您可以在Inno Setup中将Base64转换为图像,但
TListBox
不支持显示图像。非常感谢您不确定这是否可行。绝对复杂到无法在评论中回答。问一个新问题。