我有一个文本内容如下:
11
22
33
44
55
11
22
66
77
88
11
22
;-------------------
如何通过TStringList 操作这个文本改写为下面这样
11
22
33
44
55
11a
22a
66
77
88
11b
22b最好可以当数值满到多少位之后减去最后一位改成a..z望各位大侠 大哥 大姐 赐教

解决方案 »

  1.   

    看了几遍,始终没明白lz要说的意思,看起来好像LZ要把相同的字符串用'a'..'z'区分一下?但“最好可以当数值满到多少位之后减去最后一位改成a..z”说的好像又不是这么回事,俺理解能力太差了!
      

  2.   

    就是出现相同的 在后面加a 有a 变b 直到a..z满位也是如此
      

  3.   

    procedure TForm1.Button18Click(Sender: TObject);
    var 
      i: Integer;
      tmpStr: TStrings;
      tmpPreStr: string;
    begin
      tmpStr := TStringList.Create;
      tmpStr.LoadFromFile('1.txt');
      for i := 0 to tmpStr.Count - 1 do 
      begin
        if Char(RightStr(tmpStr.Strings[i - 1], 1)) in ['a'..'z'] then
          tmpPreStr := LeftStr(tmpStr.Strings[i - 1], Length(tmpStr.Strings[i - 1]) - 1)
        else tmpPreStr := tmpStr.Strings[i - 1];
        if (i > 0) and (tmpPreStr = tmpStr.Strings[i]) then
          tmpStr.Strings[i] := tmpStr.Strings[i] + Char(Ord(RightStr(tmpStr.Strings[i - 1], 1)) + 1);
      end;
       end;网上摘下来的代码.不过有问题,编译不通过对TStringList 不是太理解!望大哥能改正一下,这个需要引用 StrUtils
      

  4.   

    只是给你把语法错误改了一下,应该可以通过编译,运行结果就不知道了,你自己测试procedure TForm1.Button18Click(Sender: TObject);
    var 
      i: Integer;
      tmpStr: TStrings;
      tmpPreStr: string;
    begin
      tmpStr := TStringList.Create;
      tmpStr.LoadFromFile('1.txt');
      for i := 0 to tmpStr.Count - 1 do
      begin
        if RightStr(tmpStr.Strings[i], 1)[1] in ['a'..'z'] then
          tmpPreStr := LeftStr(tmpStr.Strings[i], Length(tmpStr.Strings[i]) - 1)
        else tmpPreStr := tmpStr.Strings[i];
        if (i > 0) and (tmpPreStr = tmpStr.Strings[i]) then
          tmpStr.Strings[i] := tmpStr.Strings[i] + Char(Ord(RightStr(tmpStr.Strings[i], 1)[1]) + 1);
      end;
    end;