123,4534,sds,200121510037692,0 
123,453fdf4,sds,200220710513343,1 
123,4534,sds,200220710513343,1 
123,4534,sds,200220710513343,1 
1df3,34,sds,200220710513343,1 
123,4534,sds,200220710513344,1 
123,4534,sds,200220710513344,1 
123,4534,sds,200220710513344,2 
1er23,4534,sds,200223210325997,2 
123,4534,sds,200223210463443,2 
123,453dfg4,sds,20032011034322377,2 
12erter3,4534,sds,200320510211160,2 
123,4534,sds,200320510371118,2 
12ert3ert,4534,sds,200320510375232,2 
123,4534,sds,200320510475891,3 
123,4534,sds,200320510499806,3 
123,4534,sds,200320510507023,3 
123,4534,sds,200320510513821,3 
1dfgdf23,4534,sds,200320532000313,3 
123,4534,sds,2003212101030030,2 
123,4534,sds,2003212101030310,3 
123,4534,sds,20032121010313880,2 
123,4534,sds,2003212101041020,4 
1ert23,4534,sds,2003212101132790,4 
123,4534,sds,2003212101154600,4 
123,4534,sds,200321232009602,4 
123,4534,sds,200321410025412,4 
123,4534,sds,200321410028958,4 
1ert23,4534,sds,200321410029462,4 
123,4534,sds,200321410047129,4 
123,4534,sds,200321510084672,4 
123,4534,sds,200321510211516,4 
123,4534,sds,200321510213759,4 
123,4534,sds,200322410501075,4 
123,4534,sds,200322410501077,4 
123,4534,sds,200322410501077,4=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
将一个文本文件第4列的数据按照要求删除,比如Edit1.text中输入077,则在回车后,这个TXT文本,删除第4列尾数为077的记录行。请问如何实现?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,k,l: integer;
      s: string;
    begin
      memo1.Lines.LoadFromFile('c:\ttt.txt');
      i := 0;
      while i < memo1.Lines.Count do
      begin
        s := memo1.Lines[i];
        k := pos(',',s);
        l := length(s);
        if l < 0 then continue;
        s  := copy(s,k+1,l);
        k := pos(',',s);
        l := length(s);
        if l < 0 then continue;
        s  := copy(s,k+1,l);
        k := pos(',',s);
        l := length(s);
        if l < 0 then continue;
        s  := copy(s,k+1,l);
        k := pos(',',s);
        l := length(s);
        if l < 0 then continue;
        s  := copy(s,0,k-1);
        l := length(s);
        k := length(edit1.text);
        s := copy(s,l-k,k);
        if s = edit1.text then
          memo1.Lines.Delete(i)
        else i := i+1;
      end;
      memo1.Lines.SaveToFile('c:\ttt.txt');
    end;
      

  2.   

    procedure myDelete(filename:string;strFlag:string;iCol:integer);
    //filename:文件名
    //strFlag:删除标记
    //iCol:删除列
    var
      liSource,liTmp:TStrings;
      i:integer;
    begin
      liSource:=TStringList.Create;
      liTmp:=TstringList.create;
      try
      liSource.loadfromfile(filename);
      //for i:=0 to liSource.count -1 do
      i:=0;
      while i<liSource.Count do
      begin
        liTmp.DelimitedText:=liSource.Strings[i];
        if Pos(strFlag,liTmp.Strings[iCol-1])>1 then
           liSource.Delete(i)
        else
           inc(i);
      end;   liSource.SaveToFile(filename);
      finally
      freeandnil(liSource);
      freeandnil(liTmp);
      end;
    end;
    调用  myDelete('c:\1.txt','077',4);
      

  3.   

    if Pos(strFlag,liTmp.Strings[iCol-1])>=1 then
      

  4.   

    function DeleteTerm(mStrings: TStrings; mCol: Integer;
      mRight: string): Integer;
    var
      I: Integer;
      vStrings: TStrings;
    begin
      Result := 0;
      if not Assigned(mStrings) then Exit;
      if mCol < 0 then Exit;
      vStrings := TStringList.Create;
      mStrings.BeginUpdate;
      try
        for I := mStrings.Count - 1 downto 0 do
        begin
          vStrings.DelimitedText := mStrings[I];
          if (vStrings.Count > mCol) and
            (Pos(mRight + ',', vStrings[mCol] + ',') > 0) then
            mStrings.Delete(I);;
        end;
      finally
        vStrings.Free;
        mStrings.EndUpdate;
      end;
    end; { DeleteTerm }procedure TForm1.Button1Click(Sender: TObject);
    begin
      DeleteTerm(Memo1.Lines, 3, Edit1.Text);
    end;