Los registros también se pueden usar para crear variables dinámicas, para ello procedemos del siguiente modo:

TYPE
TRegistro = Record
  C01:byte;
  C02:double;
End;
TPunteroReg=^TRegistro;

como se puede observar se usa el operador circunflejo para indicar que el tipo de dato será un puntero para el tipo de dato TRegistro, luego se tiene que definir el puntero usando la palabra reservada VAR, tal como se muestra:

VAR
  Registros:TPunteroReg;

Una vez definido la variable que será el puntero de la variable dinámica de tipo registro, se puede usar new si sólo queremos usar un registro como variable dinámica; pero si queremos crear una variable dinámica con varios registros entonces debemos usar getmem. A continuación un ejemplo de la creación de un arreglo de registros dinámicos:

Los registros que usa esta variable dinámica se acceden usando los corchetes y teniendo en cuenta que el primer registro se encuentra en el índice 0.

Del ejemplo anterior, se puede observar que se está usando la función SizeOf, para determinar el tamaño en bytes del tipo de dato TRegistro, y de esa manera reservar la cantidad necesaria de bytes para 5 registros. La función SizeOf también sirve para saber el tamaño en bytes de los tipos de datos, es decir si queremos saber cuántos bytes tendrá una variable de tipo int64, podemos usar SizeOf(int64).