如何在Android的Delphi Firemonkey中使用HextoBin [英] How to use HextoBin in Delphi Firemonkey for Android
本文介绍了如何在Android的Delphi Firemonkey中使用HextoBin的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在Android中采用一些Windows代码,但未成功.
I'm trying to adopt some Windows code to Android, but I am unsuccessful.
当我尝试编译以下代码时,出现错误:
When I try to compile the following code, I get an error:
[DCC错误]没有可通过这些参数调用的'HexToBin'重载版本
[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);
推荐答案
对于Android,您必须使用以下重载之一:
For Android you have to use one of these overloads:
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;
您最好使用TBytesStream而不是TMemoryStream来实现此目的.
You can best achieve this by using a TBytesStream instead of a TMemoryStream.
然后一个有效的呼叫可能看起来像这样:
A valid call could then look like this:
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);
...
这篇关于如何在Android的Delphi Firemonkey中使用HextoBin的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文