Gracias Andrés.
Es muy interesante lo que describes, y, en efecto, así pasa también en Delphi 7. Ya había echado un vistazo al Delta de la manera que indicas (aunque no lo vi con mucho detalle).
Un amigo me dejó ver unos archivos .cpp, que al parecer son los fuentes del archivo .obj que mencionas (creí haber leído que todo el DataSnap estaba reescrito en Delphi). No los he mirado con dedicación porque no dispongo de mucho tiempo ahora (aunado a que le he perdido algo de práctica a C++), pero estoy seguro que dentro de ellos se encuentra la clave de todo este misterio.
Sabes, finalmente he decidido crear mi propio método RevertRecord con un parámetro Boolean opcional llamado
FilterSafe (10 minutos para definir ese nombre
). Si es True, antes de revertir un registro nuevo, haré un par de llamadas de bajo nivel (DSCursor.PutField y DSCursor.ModifyRecord) para poner en blanco el último campo del registro que no lo esté, pues, como comenté arriba, el problema se evita si modificas el registro nuevo antes de revertirlo.
Por cierto, ¿podrías comprobar si eso último es aplicable también a Delphi 2010?
Saludos.
Al.