TXT有如下記錄:(每一行為一條數據記錄),刪除重複的數據(重複的數據可能緊挨在一起,也可能不是緊挨一起,重複數據記錄>=2,可能不止2條),但要保留一條記錄
123
123
456
987
AAA
AAA
AAA
AAA
050
050
125
126
050
125
刪除重複的後只保留一條記錄:
123
456
987
AAA
050
125
126
123
123
456
987
AAA
AAA
AAA
AAA
050
050
125
126
050
125
刪除重複的後只保留一條記錄:
123
456
987
AAA
050
125
126
0
0
0
123
456
987
AAA
方法二:0向下排序
123
456
987
AAA
0
0
0
最好在写入文件时将所有的0都“跳过”,将其它信息信息写入即可,
得到新的信息如下:
123
456
987
AAA
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
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