Hola,
¿Fichero te parece un buen título para este Hilo? No ayudarás a nadie si alguna vez se pone a
buscar información en estos Foros y este Hilo puede contener, precisamente, aquello que esté buscando. Por favor, revisa la
guía de estilo de estos Foros para más información. (Y utiliza las etiquetas Delphi, en este caso: edito yo mismo tu mensaje para que veas la diferencia)
En lo que toca a lo que dices... creo que en tu código hay algo que no cuadra y es lo siguiente:
Código Delphi
[-]
if (buscar=texto) then begin
Memo1.Lines.Add(texto);
Ahí estás "preguntando" si "buscar" es igual a "texto", pero, si las líneas del fichero guardan los datos de la manera que dices y a ti te interesa solamente el DNI, esto es, uno de los datos que guarda la línea... esa condición fallará fatalmente.
Lo que podrías hacer acaso es buscar dentro de la línea, esto es, en el contenido de la variable "texto", si existe la cadena del DNI,... por ejemplo, con la función "Pos", que te devolverá "algo" distinto de cero en caso de encontrarse lo que buscas. Echa un vistazo a su ayuda.
Y me quedo con la gana de decirte de otras funciones que pueden echarte una mano. Lo que pasa es que ahora mismo no recuerdo exactamente, y trato de localizarlas en Delphi, en la ayuda, pero, no soy capaz... tal vez algún compañero sería tan amable de darnos más información al respecto.