2017-05-15 14 views

답변

2

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을 참조하십시오.

+0

som much much –

+0

어떻게 ComboBox에 표시 할 수 있습니까? –

+0

가능한지 확실하지 않습니다. 논평에서 답할 수 없을 정도로 충분히 복잡합니다. 새로운 질문을하십시오. –