2012-09-01 73 views
3

我在我的代碼中聲明的變量,像這樣:德爾福 - 數組[0..693]字節 - 到B64編碼字符串

Var 
    VarName:Array[0..693] of Byte = (and my array here); 

我有EncdDecd在我的用途..

我我期待編碼這個字節數組成一個base64字符串使用EncodeBase64函數在EncdDecd.pas

但我不確定如何將它返回到一個漂亮和漂亮的b64字符串,可以直接轉換回字節數組與DecodeBase64 ...

我已經嘗試了幾種不同的方法..

Var Res:PWideChar; 
begin 
    StringToWideChar(EncodeBase64(@VarName, 693), Res, 693); 
    ClipBoard.SetTextBuf(Res); 
end; 

訪問衝突與代碼...

也試過:

begin 
    ClipBoard.SetTextBuf(PWideChar(EncodeBase64(@VarName, 693))); 
end; 

它返回一個字符串完全扭曲的中國符號。 ...

任何幫助返回此字符串將不勝感激..

謝謝!

回答

7

的函數聲明爲

function DecodeBase64(const Input: AnsiString): TBytes; 
function EncodeBase64(const Input: Pointer; Size: Integer): AnsiString; 

所以你以Unicode德爾福需要的是投AnsiString類型爲字符串,

var S: string; 

begin 
    S:= string(EncodeBase64(@VarName, 693)); 
    .. 

解碼是你應該把它轉換爲AnsiString類型:

var B: TBytes; 

begin 
    B:= DecodeBase64(AnsiString(S)); 
    .. 
+0

什麼單位是函數DecodeBase64和EncodeBase64聲明? –