Ver Mensaje Individual
  #2  
Antiguo 16-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hay dos problemas en tu código.

El primero es fácil detectar; está en la línea donde detectas si es o no un directorio:

if sr.Attr = faDirectory then

Debería ser:

if (sr.Attr and faDirectory) = faDirectory then

El segundo problema no estoy muy seguro a qué se debe aunque sé como evitarlo. Me parece que hay algo mal con la implementación que hace Delphi en cuanto a los atributos de archivos; creo que no incluye todos de manera que hay archivos que se pierden en la línea:

if ((sr.Attr and FileAttrs) = sr.Attr) and (sr.Name <> '.') and (sr.Name <> '..') then

por la primera condición. Pareciera que faAnyFile realmente no incluye a todos los posibles atributos.

Si quitas esa condición:

((sr.Attr and FileAttrs) = sr.Attr)

todo trabaja bien. Lo digo porque a mi me ocasionó los mismos problemas que a tí aún corrigiendo el primer problema.

Habrá que investigarle más. En el caso explícito que mencionas no hay diferencia ya que de cualquier forma estás buscando todo tipo de archivos por lo que la condición no afecta.

// Saludos
Responder Con Cita