Además de la interesante aportación de Rodrigo Ruz indicada puntualmente por
ecfisa, considera algún mecanismo de serialización que facilite el proceso de comparar.
Serializar se puede entender de forma simple como convertir cualquier grupo de información estructurada en una tira plana de bytes sin punteros (los campos String son punteros a otra región de memoria). Como tal, esa tira de bytes será perfectamente comparable mediante la función CompareMem. Sólo considera que esto puede ser más lento que comparar campo por campo o que usar códigos Hash.
Como sea, y viendo que tienes una versión moderna de Delphi, tiene mucho valor estudiar temas de RTTI y clases novedosas como TBinaryWriter.
Un saludo.