Es muy conveniente usar la función (int ^par) en lenguaje C. Revisé mucha información pero no pude encontrar cómo usarla en Delphi.
Esta noche, de repente recordé que en su lugar debería usarse el puntero universal de Delphi (puntero sin tipo). Pasa la prueba.
Procedimiento xx(a:pchar);
var
tm:^TAdodataset;
comenzar
tm:=Puntero(a);
...
fin;
procedimientobb;
var
tm:TAdodataset;
comenzar
tm...
x(@tm);
fin;