RT
谢谢偶用
HexToInt(300);
为什么会提示:"Udeclared Idefintifier 'HexToInt'"
有什么不对的地方么?

解决方案 »

  1.   

    {-----十六进制转十进制-----}
    {--------------------------}
    Function HexToInt(sHex:string):integer;
    var
     i:integer;
     dwRes:word;
     bInt:byte;
    begin
       SHex:=StringOfchar('0',4-length(sHex))+sHex;(*不足4位十六进制,高位补零*)
       dwRes:=0;
       for i:=1 to 4 do
       begin
           case AnsiIndexStr(LowerCase(sHex[i]),['a','b','c','d','e','f']) of
            0:bInt:=10;
            1:bInt:=11;
            2:bInt:=12;
            3:bInt:=13;
            4:bInt:=14;
            5:bInt:=15;
           else
             bInt:=strToint(sHex[i])
           end;//end case
           asm
              xor ax,ax
              mov al,byte ptr[bInt]
              SHL word ptr[dwRes],4
              OR word ptr[dwRes],ax
           end
       end;//end for
       result:=dwRes
    end;
      

  2.   

    谢楼上(礼多人不怪)
    像这种转化,用自己编写FUNCTION么?而且楼上的代码,偶编译不能通过,偶不怎么想用汇编的
      

  3.   

    如果你想把代表16进制数的字符串转变为10进制数,直接用strtoint
    比如strtoint('$300')就可以了
      

  4.   

    StrToInt('$' + Hex);
    //or
    StrToInt('0x' + Hex);
      

  5.   

    “数字”根本就无所谓进制,“十进制"、“十六进制”只是一种显示形式而已。也不需要用StrToInt,直接写$300不就行了。