var
FrameBuf:array[0..9] of byte;//byte不能更改;
begin
If lstDEVMAC.Items.Text= '' Then exit;
FrameBuf[0]:=Midstr(lstDEVMAC.Items.Text, 1, 2);//  'PC MAC
FrameBuf[1]:=Midstr(lstDEVMAC.Items.Text, 3, 2);//  'PC MAC
FrameBuf[2]:=Midstr(lstDEVMAC.Items.Text, 5, 2);//  'PC MAC
FrameBuf[3]:=Midstr(lstDEVMAC.Items.Text, 7, 2);//  'PC MAC
FrameBuf[4]:=Midstr(lstDEVMAC.Items.Text, 9, 2);//  'PC MAC
FrameBuf[5]:=Midstr(lstDEVMAC.Items.Text, 11, 2);// 'PC MAC
end;
其中lstDEVMAC:='090C2FF0003';
FrameBuf[ii]想要结果如下:
FrameBuf[ii]:=$C2;
请教如何将字符串的值变成十六进制时再附给FrameBuf[ii];

解决方案 »

  1.   

    FrameBuf[0] := StrToInt('$' + midstr(....));
      

  2.   

    比如:C2不是有效的整型,我的lstDEVMAC主要来取MAC地址,取的不同值时,发给不同的对象
      

  3.   

    FrameBuf[0] := StrToInt('$' + midstr(....));
    这个不好用吗?
      

  4.   

    楼上已经给出了答案,怎么还有问题呢?
      FrameBuf[0] := StrToInt('$' + midstr(lstDEVMAC,2,2));
      FrameBuf[1] := StrToInt('$' + midstr(lstDEVMAC,4,2));
      FrameBuf[2] := StrToInt('$' + midstr(lstDEVMAC,6,2));
      FrameBuf[3] := StrToInt('$' + midstr(lstDEVMAC,8,2));
      FrameBuf[4] := StrToInt('$' + midstr(lstDEVMAC,10,2));  如果要取出$C2,那么下标就必须从2开始,并且不可能有FamBuf[5]存在,字符串总共才11位,除非补0。