我有一个文本内容如下:
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望各位大侠 大哥 大姐 赐教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;网上摘下来的代码.不过有问题,编译通过运行起来没效果,对TStringList 不是太理解!望大哥能改正一下,这个需要引用 StrUtils

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      iLoop: Integer;
      AList: TStrings;
      AChar: Char;
      tmpPreStr: string;
    begin
      AList := TStringList.Create;
      try
        AList.LoadFromFile('c:\1.txt');
        for iLoop := 1 to AList.Count - 1 do
        begin
          if AList.IndexOf(AList.Strings[iLoop]) < iLoop then
          begin
            for AChar := 'a' to 'z' do
            begin
              if AList.IndexOf(AList.Strings[iLoop] + AChar) < 0 then
              begin
                AList.Strings[iLoop] := AList.Strings[iLoop] + AChar;
                break;
              end;
            end;
          end;
        end;
        AList.SaveToFile('c:\2.txt');
      finally
        AList.Free;
      end;
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      iLoop: Integer;
      AList: TStrings;
      AChar: Char;
      sTemp: String;
    begin
      AList := TStringList.Create;
      try
        AList.LoadFromFile('c:\1.txt');
        for iLoop := 1 to AList.Count - 1 do
        begin
          if AList.IndexOf(AList.Strings[iLoop]) < iLoop then
          begin
            for AChar := 'a' to 'z' do
            begin
              if Length(AList.Strings[iLoop]) < 14 then
               sTemp := AList.Strings[iLoop] + AChar
              else
               sTemp := Copy(AList.Strings[iLoop], 1, 13) + AChar;
              if AList.IndexOf(sTemp) < 0 then
              begin
                AList.Strings[iLoop] := sTemp;
                break;
              end;
            end;
          end;
        end;
        AList.SaveToFile('c:\2.txt');
      finally
        AList.Free;
      end;
    end;
      

  3.   

    3q 3q 多谢 大哥 大哥Q多少 我Q 263765558 可以做我师傅吗