文本内容如下
aaa:abc
bbbbb:cbaafa
ccbbbb:dfa
aadff:ddfaa要求:
用Edit显示出‘:’号右侧的字符串,然后修改点保存按钮在写入。(文件的行和列都是不定的。)谢谢了,找的眼睛都红了。。(我太菜)

解决方案 »

  1.   

    var
      StrList: TStringList;
      FileName, Str: String;
      PosIndex, I: Integer;  
    begin
      FileName := 'd:\***.***';
      try
        StrList := TStringList.Create;
        StrList.LoadFromFile(FileName);
        for I := 0 to StrList.Count - 1 do
        begin
          Str := StrList[I];
          PosIndex := pos(':', Str);
          if PosIndex > 0 then begin
            Str := Copy(Str, PosIndex + 1, Length(Str));
            StrList[i] := Str;
          end;
        end;
        StrList.SaveToFile(FileName);
      finally
        FreeAndNil(StrList);
      end;
    end;自己再改改
      

  2.   

    用Edit?,Edit只能是单行的哦,不如用Memo1好些吧,可以多行显示,然后修改完后就可以保存了var var S:TStrings;//全局对象,假设已经创建
      .....
       S:=TStringList.create;
      ....
    //读出文本
    var i,j:integer;
    begin
        S.loadFromFile('文本路径');
        for i:=0 to S.count-1 do
        begin
          i:=Pos(':',S[i]);
          Memo1.lines.add(Copy(S[i],i+1,length(S[i])-i);
        end;
    end;//修改完后,写入:
    var i,j:integer; TS:string;
    begin
        for i:=0 to Memo1.lines.count-1 do
        begin
          Pos(':',S[i]);
          TS:=Copy(S[i],1,i);
          TS:=TS+Memo1.lines[i];
          S[i]:=TS;
        end;
    end;......
     S.free;
    ......没有调试,不过大概如此,自己调试吧。
      

  3.   

    可能我没说明白。
    文本内容如下
    aaa:abc
    bbbbb:cbaafa
    ccbbbb:dfa
    aadff:ddfaa这是中间的一段,不是文件开始,也不是结束。只知道是68行到71行。要求:
    这四个字符串,用四个Edit显示出‘:’号右侧的字符串,然后修改点保存按钮写入。(文件的行和列都是不定的。)谢谢了,找的眼睛都红了。。(我太菜)
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        btnLoad: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Edit4: TEdit;
        btnSave: TButton;
        procedure btnLoadClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure btnSaveClick(Sender: TObject);
      private
        StrList, TempStrList: TStringList;
      public
        { Public declarations }
      end;const
      FileName = 'd:\aaa.txt';var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btnLoadClick(Sender: TObject);
    var
      I: Integer;
      Index: Integer;
      Str: String;
    begin
      StrList.LoadFromFile(FileName);  TempStrList.Capacity := 4;  for I := 67 to 70 do
      begin
        Str := StrList[I];
        Index := Pos(':', Str);
        StrList[I] := Copy(Str, 1, Index);
        TempStrList.Add(Copy(Str, Index + 1, Length(Str)));
      end;  Edit1.Text := TempStrList[0];
      Edit2.Text := TempStrList[1];
      Edit3.Text := TempStrList[2];
      Edit4.Text := TempStrList[3];
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      StrList := TStringList.Create;
      TempStrList := TStringList.Create;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      StrList.Free;
      TempStrList.Free;
    end;procedure TForm1.btnSaveClick(Sender: TObject);
    var
      I: Integer;
    begin
      TempStrList[0] := Edit1.Text;
      TempStrList[1] := Edit2.Text;
      TempStrList[2] := Edit3.Text;
      TempStrList[3] := Edit4.Text;  for I := 0 to 3 do
        StrList[I + 67] := StrList[I + 67] + TempStrList[I];  StrList.SaveToFile(FileName);
    end;end.
      

  5.   

    为什么非要用.txt文件呢,楼主会用.ini文件吗,如果你换成.ini文件的话,我想你的问题一定会很容易就解决了!.ini文件的存储格式如下:
    [Group1]
    Row1:Value1
    Row2:Value2
    .
    .
    .
    [Group2]
    Row1:Value1
    Row2:Value2
    .
    .
    .
      

  6.   

    如果不知道它在哪一行。只知道‘:’左侧的字符串该怎么办呢?
    每一行用POS匹配
      

  7.   

    每一行用POS匹配怎么匹配啊? 我菜的是不是有点离谱了个位哥哥。
      

  8.   

    Index := Pos(':', aaa);是这样的吧?
      

  9.   

    我在我的Blog(http://blog.csdn.net/luckyjan)中已写的很清楚,请看:
    http://blog.csdn.net/luckyjan/archive/2004/10/09/129079.aspx在 Readln(F, s2) 中读取的字符串 s2 用 
      i:=Pos(':',s2);
      s:=copy(s2,i+1,length(s2));
      

  10.   

    LuckyJan(小虾无招) 你的我完全看不懂啊。。