一个简单的转换问题,求解。
var
cmddata: array[0..256] of Char;
i:integer;
begin
for i := 0 to 7 do
begin
cmddata[i] := char($FF); //FF不是固定的,现将 FFFFFFFFFFFFFFFF 赋值给 cmddata 要怎么写?结果与 cmddata[i] := char($FF); 一样。
end;
end;
[解决办法]
关键你的ABCDEF0111111111,1111111111111111这些玩意在代码里怎么表达?
function fillHex(var data; hex : string):Boolean;
var
fixHex : string;
i : Integer;
tmp : string;
p : PAnsiChar;
begin
Result := False;
fixHex := '';
for i := 1 to Length(hex) do
if hex[i] in ['0'..'9','A'..'F','a'..'f'] then
fixhex := fixHex + UpCase(hex[i]);
if odd(Length(fixHex)) then
Exit;
p := PAnsiChar(@data);
for i := 0 to (Length(fixHex) div 2 - 1) do
begin
tmp := Copy(fixHex, 1 + i*2 , 2);
p^ := AnsiChar(StrToInt('$'+tmp));
Inc(p);
end;
Result := True;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
var
cmddata: array[0..256] of ansiChar;
begin
FillChar(cmddata, SizeOf(cmddata), 0);
fillHex(cmddata, 'ABCDEF0111111111,1111111111111111');
caption := cmddata;
end;