Sé que ya está resuelto el tema, y que bueno. Me llamó la atención porque hace tiempo me ocurrió algo similar. Tenía varios archivos MIDAS.dll en el disco duro y para asegurarme de cuál era el que estaba usando mi programa hice algo por demás rudimentario: renombrar una de esas DLLs, abrir mi programa y ver si marcaba error. Así con cada una, y cuando apareció el mensaje de error supe cuál era la biblioteca que se cargaba en memoria.
Eso es correcto. La clase TClientDataSet contenida en la unidad DBClient.pas realiza muchas de sus funciones internas mediante código que fue escribo en C++ y compilado como MIDAS.dll. Esto a través de dos interfaces en particular: IDSBase (propiedad DSBase) e IDSCursor (propiedad DSCursor), cuyas declaraciones están en DSIntf.pas.Pero imagino que la librería la usan directamente las Units mismas de Delphi, relacionadas con el ClientDataset (DBClient.pas, ... etc).
Llevo unos pocos años estudiando la clase TClientDataSet (incluso derivé una de la que con gusto pueden disponer), y, recientemente, gracias a los fuentes de MIDAS que vienen desde Delphi 2010 he podido mirar algo de su funcionamiento más interno para luego aplicar algunas soluciones a dificultades "menores" que a veces presenta el componente nativo. Me permití este último comentario porque me gustaría encontrar en la comunidad a alguien con cierta experiencia en el uso de TClientDataSet con quien pueda tener algo de retroalimentación a fin de actualizar y seguir enriqueciendo la clase derivada.
Un abrazo.
Al González.