如何修改DELPHI中的MEMO数据,例如 
0100024321392007042007590150 
0100020697662007042007590150 
0100020555122007042007590150 
0100022090332007042007580150 
我想判断倒数第6和7位当大于21小于24时把更改为21. 
在MEMO中有很多这样的数据,如何一次性更改,更改后如何保存为TXT文件

解决方案 »

  1.   

    将memo1中要指定修改的数据修改后存入在memo2中了,
    var i:integer;
    var s:string;
    begin
    memo2.Clear;
    for i:=0 to form1.memo1.lines.count do
    s:=memo1.lines[i];
    begin
    if (((strtoint(copy(s,6,7))>21) and (strtoint(copy(s,6,7))<24))) then
    begin
    delete(s,6,7);
    Insert(inttostr(21),s,5);end;
    memo2.Lines.Add(s);
    end
    end;
    写入文件的代码:
    var f:txtfile;
    begin
    assignfile(f,'c:\newfile.txt');
    for i:=0 to form1.memo1.lines.count do
    begin
    writeln(f,memo2.lines[i]);
    end;
    closefile(f);
      

  2.   

    看看下面的例子,窗体上添加了一个memo控件,增加三行,分别为memo1,momo2,memo3,然后试试下面的程序
    procedure TForm1.Button1Click(Sender: TObject);
    var
    str:string;
    begin
    str:=memo1.Lines[1];
    str[4]:='A';
    memo1.Lines[1]:=str;
    end;
      

  3.   

    var
      i:integer;
      mystrings:tstrings;
      tmpstr,tmpstr1,tmpstr2,tmpstr3:string;
    begin
      mystrings:=tstringlist.create;
      for i:=0 to form1.memo1.lines.count-1 do
      begin
        tmpstr:=trim(memo1.Lines.Strings[i]);
        tmpstr1:=Copy(tmpstr,1,length(tmpstr)-7);
        tmpstr2:=Copy(tmpstr,length(tmpstr)-6,2);
        tmpstr3:=Copy(tmpstr,length(tmpstr)-4,5);
        if ((strtoint(tmpstr2)>21) and (strtoint(tmpstr2)<24)) then
          tmpstr:=tmpstr1+'21'+tmpstr3;
        mystrings.Add(tmpstr);
      end;
      mystrings.SaveToFile('c:\newfile.txt');
    end;