Creo que no nos hemos entendido.
La rutina BuscarSocio no la tienes que modificar para nada, déjala como la tenías en el primer mensaje. Ahora la búsqueda por nombre:
De lo que se trata es de empezar a recorrer el archivo, registro por registro, mirando si el nombre que queremos buscar coincide con el registro actual, si lo es, dejamos de leer del archivo, porque lo hemos encontrado. Si no lo es, continuamos leyendo hasta que se encuentre o hasta el fin del archivo.
Código Delphi
[-]
procedure TForm1.BuscarSocio1Click(Sender: TObject);
var i:string; c:Socio; m:string;
begin
m := 'OK';
i:=0;
while m = 'OK' THEN
begin
inc(i);
z.BuscarSocio( i, c,m);
if m = 'OK' then
if c.Nombre = editbusqueda.text then
break; end;
If mensaje='OK' then
begin
Edit2.Text:=c.Apellido;
Edit3.Text:=c.Nombres;
Edit1.Text:=IntToStr(c.DNI);
Edit4.Text:=IntToStr(c.dn);
Edit5.Text:=IntToStr(c.mn);
Edit6.Text:=IntToStr(c.an);
end
else
ShowMessage('El texto a buscar no se encuentra en el archivo');
end;
Si ahora quieres buscar por dni, tienes que construir una rutina igual a la anterior y sustituir las líneas que dice:
Código Delphi
[-] if c.Nombre = editbusqueda.text then
break;
por estas otras:
Código Delphi
[-] if c.dni = strToint(editbusqueda.text) then
break;