FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
FindFirst
Buenos dias tengo un pequeño problema y no se si alguien puede ayudarme.
Tengo el siguiente código que recorre un directorio en busca de ficheros de texto para ser tratados con la función FindFirst. Código:
try FileAttrs:=SysUtils.faAnyFile; if(FindFirst(self.FPath + '*.txt',FileAttrs,Filename)=0) then begin repeat if (FileName.Attr and FileAttrs)=FileName.Attr then begin ¿Alguien se ha encontrado con este mismo problema? Gracias. |
#2
|
||||
|
||||
Hola,
No estoy cien por cien seguro pero creo que la condición debería quedar algo así:
Edito: Parece que no es como yo digo (luego de revisar en la ayuda) y es como tú dices. Última edición por dec fecha: 07-02-2007 a las 12:12:28. |
#3
|
|||
|
|||
FindFirst
Buenas Dec, primero muchas gracias por tu rapida respuesta.
He probado lo que me comentabas y no me ha funcionado. He consultado la ayuda de Delphi y creo que según el ejemplo que allí aparece la sintaxis es correcta. Lo más curioso del tema es que este proceso funciona bien, solo que en algunas ocasiones para algunos ficheros de forma extraña no funciona y los ficheros no parecen tener nada extraño. |
#4
|
||||
|
||||
Esto si funciona... No veo el final de tu bucle...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO |
#5
|
|||
|
|||
Muchas gracias por la ayuda que me habeis dado.
Sobre lo que comentabas he probado el código que me has pasado y efectivamente funciona. Gracias de nuevo. Sin embargo donde tengo el problema es en el if que evalua los atributos del fichero que debe tratar:
El problema es que como me pasa de forma aleatória es dificil de encontrar el porque, pero creo que tal vez lo haya descubierto. Os cuento a ver si esto tiene lógica: Mirando la ayuda con relación a Filename.Attr menciona que devuelve los atributos del fichero. Entre otros puede tomar dos constantes, faArchive y faSysLink con los valores 32 y 64 respectivamente. En una de las ocasiones que he conseguido reproducir el valor he visto que mientras que yo esperaba recibir un valor 32 (faArchive) me llegaba un 64. Estos archivos no los copio yo sino que solo los recibo y trato. Con esto si abro uno de los ficheros y lo grabo de nuevo, funciona. Entiendo por tanto que en ocasiones estos archivos no me los graban de forma correcta o bien los atributos no estan correctos. Después de este rollo he optado por cargarme el if y validar de otras formas. Por cierto sobre el final del bucle, este trata el fichero y acaba con un FindNext, pero como en principio ví que el problema lo tenia en el if, ya ni lo puse. Repito, muhas gracias por la ayuda. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Findfirst funciona cuando quiere | rfernandez | API de Windows | 3 | 17-03-2005 11:35:43 |
Buscar archivos con FindFirst | eulogi_SCG | Varios | 2 | 28-09-2004 15:27:38 |
FindFirst, FindNext, FindClose | DJ VMan | Varios | 4 | 17-11-2003 01:36:53 |
hay algo as rapido ke findfirst y findnext? | Alejo | Varios | 1 | 15-10-2003 21:34:05 |
|