3

次のように、コードに宣言された変数があります。

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

私は自分の用途に EncdDecd を持っています..

EncdDecd.pas の EncodeBase64 関数を使用して、このバイト配列を base64 文字列にエンコードしようとしています。

しかし、DecodeBase64 を使用してバイト配列に直接変換できる素敵できれいな b64 文字列に戻す方法がわかりません...

私はいくつかの異なるアプローチを試しました..

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

そのコードでアクセス違反...

また試しました:

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

これは、歪んだ中国語記号でいっぱいの文字列を返します....

この文字列を返す際の助けをいただければ幸いです..

ありがとう!

4

1 に答える 1

7

関数は次のように宣言されます。

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

したがって、Unicode Delphi で必要なのは、AnsiString を文字列にキャストすることだけです。

var S: string;

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

S をデコードするには、AnsiString にキャストする必要があります。

var B: TBytes;

begin
  B:= DecodeBase64(AnsiString(S));
  ..
于 2012-09-01T07:41:15.740 に答える