no soy muy experto en delphi pero te dejo una idea que se me ocurre
2 arrays,
1 para almacenar los nombres de los campos (Fieldbyname, field, etc)
1 para almacenar los valores de los campos (del que queremos copiar)
entonces hacemos el append y vaciamos en ese nuevo registro el segundo array con los campos almacenados en el primero
se entiende? djie que era una idea