TXT有如下記錄:(每一行為一條數據記錄),刪除重複的數據(重複的數據可能緊挨在一起,也可能不是緊挨一起,重複數據記錄>=2,可能不止2條),但要保留一條記錄
123
123
456
987
AAA
AAA
AAA
AAA
050
050
125
126
050
125
刪除重複的後只保留一條記錄:
123
456
987
AAA
050
125
126

解决方案 »

  1.   

    一行行读,添加到列表,然后下一条判断列表中的IndexOf
      

  2.   

    方法一:0向上排序
    0
    0
    0
    123
    456
    987
    AAA
    方法二:0向下排序
    123
    456
    987
    AAA
    0
    0
    0
    最好在写入文件时将所有的0都“跳过”,将其它信息信息写入即可,
    得到新的信息如下:
    123
    456
    987
    AAA
      

  3.   

    procedure TForm2.btn1Click(Sender: TObject);
    var
      vList: TStringList;
    begin
      vList := TStringList.Create;
      try
        vList.Sorted := True;
        vList.Duplicates := dupIgnore;
        vList.LoadFromFile('F:\Test\xxx.txt');
        ShowMessage(vList.Text);
      finally
        vList.Free;
      end;
    end;
    xxx.txt文件内容:
    123
    123
    456
    987
    AAA
    AAA
    AAA
    AAA
    050
    050
    125
    126
    050
    125
      

  4.   

    var
       sFileName,s: string;
       i : integer;
       txt : Textfile;
       strs:TStringList;
    begin 
        sFileName := dlgOpen1.FileName;
        AssignFile(txt,sFileName);
        Reset(txt);
        strs := TStringList.Create;
       // strs.LoadFromFile(sFileName);
      //過濾掉重複的記錄
        strs.Sorted := True;
        strs.Duplicates := dupIgnore;
        strs.LoadFromFile(sFileName);
        strs.SaveToFile(sFileName);//這個有問題嗎?   for i :=  0  to  strs.Count-1 do
         begin
            s := strs[i];
            s := StringReplace(s, #32,'',[rfReplaceAll]);
            qry1.First;
          with qry1 do
           begin
            Append;
            s3 := Copy(s,1,2); //腹
            FieldByName('MachineNo').AsString := s3;
            FieldByName('CardNo').AsString := Copy(s,15,10);
            s1 := Copy(s,3,8);//ら戳
            s1 := Copy(s1,1,4)+'/'+ Copy(s1,5,2)+'/'+Copy(s1,7,2);
            FieldByName('ADate').AsString := FormatDateTime('yyyy/mm/dd',StrToDate(s1));
            s2 := Copy(s,11,4);  //丁
            s2 := Copy(s2,1,2)+':'+Copy(s2,3,2)+':'+'00';
            FieldByName('ATime').AsString := s2;
            FieldByName('ADateTime').AsString :=s1+' '+s2;
            Post;
           Next;
    end;這樣寫,有重複記錄的TXt 還是提示錯誤,因為表設置了主鍵,,,導入TXT時想重複的只導入一條到SQL 2K
      

  5.   

    哪位達人幫忙看下這個Delphi Code