2017-03-22 9 views
0

AndroidにいくつかのWindowsコードを採用しようとしていますが、失敗しました。Android用Delphi FiremonkeyでHextoBinを使用する方法

私は、次のコードをコンパイルしようとすると、私はエラーを取得する:Android用

[DCC Error] There is no overloaded version of 'HexToBin' that can be called with these arguments

var 
    BinaryStream: TMemoryStream; 
    HexStr: String; 
    WSocket: TWSocket; 
begin 
    HexStr := memo1.Text; 
    BinaryStream := TMemoryStream.Create; 
    try 
    BinaryStream.Size := Length(HexStr) div 2; 
    if BinaryStream.Size > 0 then 
    begin 
     HexToBin(PChar(HexStr), BinaryStream.Memory, BinaryStream.Size); 
     HexStr:=''; 
     HexStr:=MemoryStreamToString(BinaryStream); 
     memo1.Text:=HexStr; 
     IdUDPClient1.Send(HexStr); 
+0

あなたが他のすべてのコードを示しているのはなぜ。コンパイルされない1行だけに焦点を当てることはできませんか? –

+0

私のコードで何が起こっているのかをよりよく理解するためです。私はすべてが適切にコード化されているかどうかはわかりません。 – AKYLA

+0

@David Heffernan申し訳ありませんが、何かが正しく行われていない場合、私は新しく、正しくすべてを実行する方法を理解していません – AKYLA

答えて

2

あなたはこれらのオーバーロードのいずれかを使用する必要があります。

function HexToBin(const Text: PChar; TextOffset: Integer; 
    var Buffer: TBytes; BufOffset: Integer; Count: Integer): Integer; overload; 

function HexToBin(const Text: TBytes; TextOffset: Integer; 
    var Buffer: TBytes; BufOffset: Integer; Count: Integer): Integer; overload; 

あなたは最高の達成することができますこれは、TMemoryStreamではなくTBytesStreamを使用して行います。

有効なコールは、次のようになります。

var 
    BinaryStream: TBytesStream; 
    bytes: TBytes; 
    HexStr: String; 
begin 
    HexStr := memo1.Text; 
    SetLength(bytes, Length(HexStr) div 2); 
    HexToBin(PWideChar(HexStr), 0, bytes, 0, Length(bytes)); 
    BinaryStream := TBytesStream.Create(bytes); 
    ... 
+0

いくつかのサンプルを与えてください、働くことができません(同じエラー var BinaryStream :TBytesStream; HexaStr:文字列は、 が開始 のBinaryStream:= TBytesStream.Create; がしよう BinaryStream.Size:=長さ(HexaStr)のdiv 2; BinaryStream.Size> 0、その後 HexToBin(PWideChar型(HexaStr場合)、0 、BinaryStream.Memory、0、BinaryStream.Size); – AKYLA

+0

これも機能しません( var LStr1、LStr2:WideString; begin {メモ内のテキストをString変数に格納します。 } LStr1:= Memo2.Lines.Text; {変換を保持する文字列の長さを設定します。 } SetLength(LStr2、Length(LStr1)div 4); {16進数から2進数への変換手順を呼び出します。 } HexToBin(PWideChar(LStr1)、LStr2 [1]、Length(LStr1)div SizeOf(Char)); {結果をMemo1に出力します。 } Memo1.Lines.Text:= LStr2; – AKYLA

+0

@AKYLA、私は呼び出しの例を追加しました。 –

関連する問題