简单删除的问题
procedure DelSameRecord(var MemTable: TMemTableEh; CheckFields: string); //TMemTableEh和table一样 var FFieldList,FFieldValueList : TStringList; tempCheckFields,tempField,tempDifferValue: string; i : integer; begin FFieldList := TStringList.Create; FFieldValueList := TStringList.Create; FFieldList.CommaText := CheckFields; MemTable.First; while not MemTable.Eof do begin tempDifferValue := ''; //存储一个或多个字段的值组成的检查项 for I := 0 to FFieldList.Count - 1 do begin tempDifferValue := tempDifferValue + MemTable.FieldByName(FFieldList.Strings[i]).AsString +','; end; if FFieldValueList.IndexOf(tempDifferValue) >= 0 then //有重复值,则删除当前记录 begin MemTable.Delete; //这里会有点问题,当重复值为最后一条时,指针会指向第一条记录 end else begin FFieldValueList.Add(tempDifferValue); MemTable.Next; end; end; FFieldList.Free; FFieldValueList.Free; end;