先copy'.'后面的12345出来作为整数,然后succ(12345);然后转换成字符串放回去!
var
 s:string;
s:='冀A.12345';
resutl:=format('%s%d',['冀A.',succ(strttoint(copy(s,4,length(s)-4)))]);
代码就是这个样子,我没有测试,你自己修改一下。

解决方案 »

  1.   

    不知你是什么数据库?
    oracle:
    select substr(CBH,1,2)||to_char(to_number(substr(CBH,3,Length(CBH)-2))+1) as CBH
    先取出后面几位,转为数值型,加上1,再转为字符型.
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Caption := '粤A.' + IntToStr(StrToInt(GetNumFromStr(Edit1.Text)) + 1);
    end;//可以从字符串中选出所有的数字
    function TForm1.GetNumFromStr(AStr: String): String;
    var
      I, J: Integer;
      RStr: String;
    begin
      for I := 0 to Length(AStr) - 1 do
      begin
        //Chr(48) = '0'
        for J := 48 to 57 do
        begin
          if Copy(AStr, I + 1, 1) = Chr(J) then
            RStr := RStr + Chr(J);
        end;
      end;
      Result := RStr;
    end;good luck三少 :o)
      

  3.   

    对不起,问题的中心在于不知道截取后面的第几位,因为记录中有的是"冀A.11111",有的是"冀A.F1111"还有的是"冀A.EF111",这三种格式的比较多,再有就是如果记录为"冀A.0001",转换
    数值后加1就变成"冀A.2"了。
      

  4.   

    你可以在函数中再加一点啦,不如说粤A.0001这样的形式,你可以将所有的数字着出来以后,处理一下这个截出来的字符串,得到一个非0开头的字符串,转换后加1,在转过来再把0添上.我觉得提供给你思路就行了,没有必要要我们把函数也写出来吧!解决的办法有很多中,实现就行,等你实现以后可以再来优化.
    good luck三少 :o)
      

  5.   

    to ePing:
    思路我是知道,就是不知道怎么实现才来发贴子。help me
      

  6.   

    答案:
    //得到数字部分
    function TForm1.GetNumFromStr(AStr: String): String;
    var
      I, J: Integer;
      RStr: String;
    begin
      for I := 0 to Length(AStr) - 1 do
      begin
        //Chr(48) = '0'
        for J := 48 to 57 do
        begin
          if Copy(AStr, I + 1, 1) = Chr(J) then
            RStr := RStr + Chr(J);
        end;
      end;
      Result := RStr;
    end;//这个函数包含处理两种情况
    function TForm1.GetSpeicalStr(AStr: String): String;
      function AddZero(Nums: Integer): String;
      var
        I: Integer;
      begin
        for I := 1 to Nums do
          Result := Result + '0';
      end;
    var
      ChPart: String; //除了数字的一部分;
      NumPart: String; //数字部分;
      APos: Integer;  //
    begin
      APos := 0;
      NumPart := GetNumFromStr(AStr);
      ChPart := Copy(AStr, 1, Length(AStr) - Length(NumPart));
      if Copy(NumPart, 1, 1) = '0' then //如果截出来的是以0开头的
      begin
        repeat APos := APos + 1         
        until Copy(NumPart, APos, 1) <> Chr(48);
        Result := ChPart + AddZero(APos - 1) + IntToStr(StrToInt(NumPart) + 1);
      end else
        Result := ChPart + IntToStr(StrToInt(NumPart) + 1);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(GetSpeicalStr('粤A.0001'));
    end;会达到你的要求的,你在优化优化吧!!!Good Luck三少 :o)
      

  7.   

    如果有问题再发帖子,不过我都试验过,No 问题.三少 :o)
      

  8.   

    format('%0.5x',[789])可以在前面自动添加0!