简单删除的问题
- Delphi(Pascal) code
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;
我就是想在MemTable中删除重复的记录,如果MemTable中只有两条记录,并且他们是相同的,MemTable.Delete删除后,MemTable.Eof为false,继续把第一条也删掉了,晕。这个怎么判断为最后一条?在MemTable.Delete;加入 if MemTable.bof也是false。
[解决办法]
往往是自己提出问题,然后就知道该怎么解决了,如果不提出来,一直不知该如何解决。
也许这是是因为,提出问题的过程,实际上也是使问题更加明确的过程,这样一来,问题进一步明确,就更加容易解决了。