如下,buf值已知的情况:
var :array of byte;
begin 
 setlength(buf,3); 
 buf[0]:=$41;注:1
 buf[1]:=$54;
 buf[2]:=$2A;
end;
上面的工作正常,遇到的问题是:
buf值是未知的,得从str中读取
str:string;
str:='41542A';
buf[0]:=$copy(str,1,2);//以下3行为伪代码
buf[1]:=$copy(str,3,2);
buf[2]:=$copy(str,5,2);
关键就是如何实现倒数三行这种功能,从而达到"注1"的那种效果.
请各位帮帮小弟,感激不尽

解决方案 »

  1.   

    注:str中的41,54,2A均为16进制
      

  2.   

    var
      str: string;
      buf: array of byte;
    begin
      str := '41542A';
      SetLength(buf, Length(str) div 2);
      buf[0] := StrToInt('$' + str[1] + str[2]);
      buf[1] := StrToInt('$' + str[3] + str[4]);
      buf[2] := StrToInt('$' + str[5] + str[6]);
    end;
      

  3.   

    段海的代码行,你是不是解 asc码方式的协议,
      

  4.   

    to  fengzhizhu(风之竹 KingOne) 
    在delphi中,16進制的數在其前面加'$'來表示
    如$AA
      

  5.   

    var
      str: string;
      buf: array of byte;
    i:integer;
    begin
      str := '41542A';
      i:=0;
      SetLength(buf, Length(str) div 2);
      while str<>'' do
        begin
          buf[i]:=strtoint('$'+copy(str,1,2));
          inc(i);
          str:=copy(str,3,length(str)-2);
        end; 
      end;