Base64에 플래그가있는 XML이 있습니다.Base64에서 Inno Setup Pascal Script의 비트 맵으로 변환 하시겠습니까?
설치 프로그램의 목록 상자에 표시하기 위해 디코드하고 싶습니다. 어떻게 할 수 있습니까?
Base64에 플래그가있는 XML이 있습니다.Base64에서 Inno Setup Pascal Script의 비트 맵으로 변환 하시겠습니까?
설치 프로그램의 목록 상자에 표시하기 위해 디코드하고 싶습니다. 어떻게 할 수 있습니까?
Base64 문자열을 실제 이진 데이터로 변환하려면 CryptStringToBinary
Windows API function을 사용할 수 있습니다.
function CryptStringToBinary(
sz: string; cch: LongWord; flags: LongWord; binary: string; var size: LongWord;
skip: LongWord; flagsused: LongWord): Integer;
external '[email protected] stdcall';
const
CRYPT_STRING_BASE64 = $01;
procedure LoadBitmapFromBase64(Bitmap: TBitmap; S: string);
var
Stream: TStream;
Buffer: string;
Size: LongWord;
begin
Stream := TStringStream.Create('');
try
SetLength(Buffer, (Length(S) div 2) + 1);
Size := Length(S);
if (CryptStringToBinary(S, Length(S), CRYPT_STRING_BASE64, Buffer, Size, 0, 0) = 0) then
begin
RaiseException('Error decoding Base64 string');
end;
Stream.WriteBuffer(Buffer, Size);
Stream.Position := 0;
Bitmap.LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
코드
는 이노 설치 프로그램의 유니 코드 버전이 필요합니다. 21 세기에 Ansi 버전을 사용해서는 안됩니다. 아이러니 컬하게도, Ansi 버전에서 이것을 구현하는 것이 더 쉬울 것입니다. Inno Setup의 Ansi 및 Unicode 버전과 호환되는CryptStringToBinary
의 사용에 대해서는 my answer to Writing binary file in Inno Setup을 참조하십시오.
som much much –
어떻게 ComboBox에 표시 할 수 있습니까? –
가능한지 확실하지 않습니다. 논평에서 답할 수 없을 정도로 충분히 복잡합니다. 새로운 질문을하십시오. –
Inno Setup에서 Base64 이미지로 변환 할 수 있지만 'TListBox'는 이미지 표시를 지원하지 않습니다. –