var
  aa:string;
 begin
  aa:='02';
 end;
如何得到在aa的基础上加1,变成'03'

解决方案 »

  1.   

    var
      aa:string;
    begin
      aa:=IntToStr(StrToInt(aa)+1);
      if length(aa)=1 then aa:='0'+aa;
    end;
      

  2.   

    我认为楼上的不完全对!
    那样前面的“0”就没有啦!
    我认为最后再加一条语句,判断长度!
     firebing(初学者) 的有道理!
      

  3.   

    用这个方法试试:
    format('%8.2d',[strtoint(aa)+1])
    8.2中的8代表占8个字符,2表示最少两位,不够左侧用0补齐,也就是说3会表示成03,希望你符合你的要求!
      

  4.   

    var
      aa:string;
    begin
       if length(aa)=1 then  aa:=IntToStr(StrToInt(aa)+1);
         else
         begin
            aa:=IntToStr(StrToInt(aa)+1);
            aa:='0'+aa;
         end;
    end;
      

  5.   

    如果说aa是三位的呢,用case吗?如果多位呢?
    我觉得先用原长度-转换为整数后的长度,得到n,得结果后再在前面加上n个0.
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      a:string;
    begin
      a:='02';
      label1.Caption :=inttostr(strtoint(a)+1);
    end;
      

  7.   

    为什么仍然不行。大家帮忙看
    sqlstring:='select max(folderno) as maxfolderno from folders where len(folderno)=2';
    folders.sql.add(sqlstring);
    folders.Open;
    maxfolderno:=folders.FieldByName('maxfolderno').Asstring;
    edit1.Text:=maxfolderno;
    edit1.Text:=format('%8.2d',[strtoint(maxfolderno)+1]);
    如果单单maxfolderno:='02'然后再进行上述操作是可以的。
    但像我这样从服务器去某个字段的数据,为什么就不行了呢,字段里也是02的。我输出到edit1中也是02.