function ToDEC(str:String;c:byte):string;
var
  s:int64;
  d,i:integer;
  m:string;
begin
  s:=0;
  for i:= 1 to length(str) do
  begin
    m:=copy(str,i,1);
    case m of
    'F':d:=15;
    'E':d:=14;
    'D':d:=13;
    'C':d:=12;
    'B':d:=11;
    'A':d:=10;
    else
      d:=StrToInt64(m);
  end;
  s:=s+d*c^(length(str)-i);
  end;
  ToDEC:=intToStr(s);
end;少个END:

解决方案 »

  1.   

    case m of//m需要是序数类型
      

  2.   

    那就。function ToDEC(str:String;c:byte):string;
    var
      s:int64;
      d,i:integer;
      m:string;
      tempm:char;
    begin
      s:=0;
      for i:= 1 to length(str) do
      begin
        m:=copy(str,i,1);
        tempm:=m[1];
        case tempm of
        'F':d:=15;
        'E':d:=14;
        'D':d:=13;
        'C':d:=12;
        'B':d:=11;
        'A':d:=10;
        else
          d:=StrToInt64(tempm);
      end;
      s:=s+d*c^(length(str)-i);
      end;
      ToDEC:=intToStr(s);
    end;
      

  3.   

    s:=s+d*c^(length(str)-i);//c不是指针类型
      

  4.   

    function ToDEC(str:String;c:byte):string;
    var
      s,e:int64;
      d,i:integer;
    begin
      s:=0;
      e := 1;
      for i:= length(str) downto 1 do
      begin
        Case str[i] Of
        'F','f':d:=15;
        'E','e':d:=14;
        'D','d':d:=13;
        'C','c':d:=12;
        'B','b':d:=11;
        'A','a':d:=10;
        else
          d:=StrToInt64(m);
        end;
        s := s + d*e;
        e := e * C;
      end;
      ToDEC:=intToStr(s);
    end;
      

  5.   

    function ToDEC(str:String;c:byte):string;
    var
      s:int64;
      d,i:integer;
      m:string;
      function Exp(const x: Int64; const y: Byte): Int64;
      var
        c: Integer;
      begin
        if y <= 0 then
          Result := 1
        else
        begin
          Result := 1;
          for c := 1 to y do
            Result := Result * x;
        end;
      end;
    begin
      s:=0;
      for i := 1 to length(str) do
      begin
        m:=copy(str,i,1);
        case m[1] of
          'F':d:=15;
          'E':d:=14;
          'D':d:=13;
          'C':d:=12;
          'B':d:=11;
          'A':d:=10;
        else
          d:=StrToInt64(m);
        end;
        s := s + d * Exp(c, Length(Str) - i);
      end;
      ToDEC:=intToStr(s);
    end;
      

  6.   

    有一句错,更正为 d:=strToInt64(str[i])