PDA

Ver la Versión Completa : Obtener el Contenido de una unidad (cd o hd), es posible?


Essato
22-04-2005, 04:40:28
Hola, de antemano gracias, espero que me puedan ayudar, el problema es que quiero agregar el contenido de un CD o un disco duro a una db, es decir, una lista de las carpetas/archivos contenidos en la unidad seleccionada, que desplegara algo como:



carpeta1\archivo1.ext
carpeta2\
carpeta2\carpeta2s1\
carpeta2\carpeta2s2\
carpeta2\carpeta2s2\archivo2.ext
archivo3.ext
Que sea recursivo con todos las subcarpetas. Como es posible hacer esto, pero como?, soy nuevo en delphi, se programar en otros lenguajes y la verdad me es algo frustrante que en otros lenguajes es algo tan sencillo (como en php). Alguien que por favor me ayude a encontrar la forma de resolver este problema??

Gracias.

roman
22-04-2005, 06:55:20
procedure DirList(Path: String; List: TStrings);
var
SearchRec: TSearchRec;

begin
Path := IncludeTrailingPathDelimiter(Path);

if FindFirst(Path + '*.*', faAnyFile, SearchRec) = 0 then
begin
List.BeginUpdate;

repeat
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
begin
if (SearchRec.Attr and faDirectory = faDirectory) then
begin
List.Add(Path + SearchRec.Name + '\');
DirList(Path + SearchRec.Name, List);
end
else
List.Add(Path + SearchRec.Name);
end;
until FindNext(SearchRec) <> 0;

List.EndUpdate;
end;

FindClose(SearchRec);
end;




// Uso
DirList('C:\Mis documentos', ListBox1.Items);


No es la forma óptima y si lo ejecutas contra 'C:\' prepárate a esperar un buen rato.

// Saludos

Neftali [Germán.Estévez]
22-04-2005, 11:19:12
Otra opción es que el componente ShellTreeView te haga el trabajo. En la carpeta \Demos\ShellControls\ está éste componente que se instala en la paleta de Samples en Delphi.

Puedes colocar un componente de éstos en un form.
(1) Configuras la propiedad Root con C:\
(2) Ejecutas: ShellTreeView1.FullExpand; para expandir todos los niveles.
(3) Y cuando acabe guardarlo en un fichero con:
ShellTreeView1.SaveToFile('c:\temp\aa.txt');

Una vez en el fichero puedes hacer lo que quieras con él.

Essato
22-04-2005, 17:10:43
Hola, gracias por sus respuestas, probare ambos métodos y ya les dire.