Ver Mensaje Individual
  #3  
Antiguo 14-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Reputación: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues es verdad que se cuelan los archivos Zip y me temo que no serán los únicos... luego de varias pruebas parece ser que se toman los archivos ZIP (y acaso otro tipo de archivos comprimidos) como "directorios", y, puesto que, en cierto modo así son.

Lo cierto es que tanto "AFolder.IsFolder" retorna "true" con un archivo Zip y la función "FileGetAttribute" ídem de ídem. No sé me ocurre ahora mismo ninguna forma de conseguirlo, pero, tiene que haberla, apostaría algo.

En este artículo en Torry's se trata el tema, pero, no lo he probado y, me parece, que también de ese modo se colarían los archivos Zip...

Después de algunas vueltas... he probado a utilizar la función de Windows "GetFileAttributes", y, de esta forma parece que no se cuelan archivos Zip (ignoro si se colará algún otro tipo de archivo... no deseado...), esto es, dicha función no parece tomar los archivos Zip como directorios, como ocurría con la "FileGetAttribute" y "AFolder.IsFolder".

Código Delphi [-]
const
  // filtroArchivos = '.txt'; // Sólo archivos de texto
  // Se me ocurre algo así para permitir varios "tipos" de archivo
  filtroArchivos = '.txt .dat';

procedure TForm1.ShellListView1AddFolder(Sender: TObject;
  AFolder: TShellFolder; var CanAdd: Boolean);
begin
  // Así parece que no se cuelan los archivos Zip (no sé el resto de "comprimidos")
  CanAdd := ((GetFileAttributes(PChar(AFolder.PathName)) and FILE_ATTRIBUTE_DIRECTORY) <> 0)
    or (Pos(AnsiLowerCase(ExtractFileExt(AFolder.PathName)), AnsiLowerCase(filtroArchivos)) <> 0);
end;

PD. Los archivos en formato ".rar" tampoco se cuelan... ignoro si lo hacían "antes".
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 14-08-2006 a las 07:07:48.
Responder Con Cita