kbmMemTable.Undo方法存在的问题
这个方法调用不当,会产生AV错误。具体情况看下面的代码:
procedure TForm1.Button1Click(Sender: TObject); begin kbmMemTable1.EnableVersioning:=True; kbmMemTable1.Append; kbmMemTable1.FieldByName('f1').AsString:='1111'; kbmMemTable1.FieldByName('f2').AsString:='1111'; // kbmMemTable1.Post; kbmMemTable1.Undo; //An address error will occur on the android platform kbmMemTable1.CheckPoint; end;
1.当kbmMemTable.EnableVersioning为True,并且
2.当前记录处在修改状态,如dsInsert,dsEdit,
3.在android下才会产生地址错误。给作者发了邮件,等官方解决。
暂时的解决方法,在Undo前加上这句:
if kbmMemTable1.State in [dsEdit,dsInsert] then kbmMemTable1.Cancel;
环境:
Delphi 10.3.3
kbmMem:7.83.00 Professional Edition
2020/10/09 kbmMem 7.85.00 Professional Edition解决了!