Cita:
|
Empezado por Gunman
Gracias maeyanes, me has ayudado a depurar el código de mi procedimiento, pero la verdad es que este código hace exactamente lo mismo que hacia el mio, le he hecho unas modificaciones y se ha quedado así, pero sigue haciendo lo mismo que el mio...
|
Obviamente estas añadiendole tus errores al código que
Maeyanes puso de memoria.... ¡¡ y que memoria !!

solo tiene un par de detalles, que despues de ejecutar paso a paso se vé claramente.
Por cierto, no te ha ayudado a "depurar el código" sino a trabajar recursivamente.
Código Delphi
[-]
procedure TForm1.Button3Click(Sender: TObject);
procedure TreeListing(const Folder: string; Nodes: TTreeNodes;
ParentNode: TTreeNode);
var
AFolder: TSearchRec;
NewNode: TTreeNode;
begin
if FindFirst(Folder + '*.*', faDirectory, AFolder) = 0 then
repeat
if ((AFolder.Attr and faDirectory) = faDirectory) and
((AFolder.Attr and faSysFile) <> faSysFile) and
(AFolder.Name <> '.') and (AFolder.Name <> '..') then
begin
NewNode := Nodes.AddChild(ParentNode, AFolder.Name);
TreeListing(IncludeTrailingPathDelimiter(Folder+AFolder.Name) +
'*.*', Nodes, NewNode);
end;
until
FindNext(AFolder) <> 0;
FindClose(AFolder);
end;
begin
TreeView1.Items.Clear;
TreeListing(('c:\windows\'),TreeView1.Items,nil);
end;
El primer detalle es que hay que usar AddChild para que los meta dentro.
El segundo, es que al llamar a la función recursiva, hay que DARLE LA RUTA COMPLETA.
Una "manía" mia, es que al llamar a FindFirst, no hace falta usar el includePathDelimiter, ya que siempre se le da la ruta con la barra al final.
saludos