PDA

Ver la Versión Completa : ficheros


Delpho
12-02-2006, 12:10:42
Wenas amigos!!
Tengo una pequeña duda, y sobre como buscar una cadena dentro de un fichero.
mi fichero tiene un forma como este:
nombre apellido apellido2 fecha dni
y quisiera saber si yo puedo buscar la cadena de DNI y mostrar la linea entera


procedure TForm3.Button1Click(Sender: TObject);
begin
buscar:=MaskEdit1.Text;
if FileExists('Clientes2.txt') then begin
AssignFile (fich,'Clientes.txt');
Reset (fich);
while not Eof(fich) do Begin
Readln(fich,texto);
if (buscar=texto) then begin
Memo1.Lines.Add(texto);
end;
end;//fin while
CloseFile (fich);
end
else begin
ShowMessage('El fichero aun no existe');
end;//fin if
end;


Aver si alguien me puede echar una mano y decirme como se podria hacer
Muchas Gracias!!!

dec
12-02-2006, 12:34:40
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 (http://www.clubdelphi.com/foros/search.php) en estos Foros y este Hilo puede contener, precisamente, aquello que esté buscando. Por favor, revisa la guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) 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:


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.

Delpho
12-02-2006, 12:41:52
Muchas Gracias, ya encontre yo la funcion

i:=Pos(buscar,texto);

si i=0 es que no lo a enontrado, sino muestro la linea

Hasta Luego, y perdon por el nombre del hilo