3

我正在处理的代码大量使用 TFDMemTables,并使用 CloneCursor 克隆这些表。

有时,在我无法识别的特定条件下,源表及其克隆变得不同步:它们之间的数据可能不同,记录数也可能不同。在克隆的表上调用 Refresh 会使事情恢复原状。

据我了解,CloneCursor 用于寻址存储数据的同一底层内存,这意味着从两个指针中的任何一个对底层数据的更改应该反映在另一个表上,但允许用户根据“看法”。那么它怎么可能不同步呢?

我构建了一个小型模拟器,我可以在其中插入/删除/过滤表或其克隆中的记录,并观察对另一个的影响。更改已正确反映。

Refresh 的另一个缺点是,如果过度使用,它会极大地减慢执行速度。

有没有人遇到过类似的问题或找到关于此事的解释/文档?

编辑:

澄清我所说的“不同步”是什么意思,这意味着使用 FieldByName 从表中读取一个值将在刷新之前返回 X,在刷新后返回 Y。我无法在上述模拟器上重现此行为。

4

0 回答 0