Ver Mensaje Individual
  #6  
Antiguo 04-12-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita