Caramba roman, yo estaba pensando en algo similar. Pero estas hecho un agonioso (me esta empezando a gustar la palabrita
)
Aunque mi idea era separar el DNI del resto de valores con un '=' en vez de con un espacio, para así aprovechar la propiedad Values del propio TStringList. Por el resto, la cosa seria igual, usar un segundo TStringlist para separar los campos.