1 setlength 在这里不应该用,string类型是自动分配内存,自动回收的。
2  你的意思是问怎么转换成16进制么? 我有个函数,可以直接使用,它是这么声明的。
function IntToHex(Value: Integer; Digits: Integer): string;
begin
  FmtStr(Result, '%.*x', [Digits, Value]);
end;

解决方案 »

  1.   

    function HexStrToInt(const HexStr: String): integer;
    var
      i: integer;
      base: integer;
    begin
      result := 0;
      base := 1;  for i := Length(HexStr) downto 1 do
      begin
        case HexStr[i] of
          '0'..'9': Inc(result, (Ord(HexStr[i]) - Ord('0')) * base);
          'a'..'f': Inc(result, (Ord(HexStr[i]) - (Ord('a') - 10)) * base);
          'A'..'F': Inc(result, (Ord(HexStr[i]) - (Ord('A') - 10)) * base);
        else
          raise EConvertError.Create('格式不对');
        end;
        base := base * 16;
      end;
    end;
      

  2.   

    ASCII码本身就是整型啊  比如 65 代表 A
    Char(65) 就将其转换成字符A了
    Ord('A') 返回以10进制整型的ASCII码,为65
    IntToHex(Ord('A'),2) 返回以2位字符串型的16进制数,为41。其中2为你要显示的16进制数的位数。
    Edit1.text:=Char(65);  //显示 A
    Edit2.text:=IntToStr(Ord(Char(65)));  //显示 65
    Edit3.text:=IntToHex(Ord(Char(65)),4);  //显示 0041