Thema: Delphi Ordner schnell einlesen

Einzelnen Beitrag anzeigen

silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Ordner schnell einlesen

  Alt 21. Mär 2004, 19:45
Hi,
nach langem programmieren: hier der code:
Delphi-Quellcode:
procedure TFenster.GetDirs(const ADirectory: String; var Tree: TTreeView; Start: TTreeNode);
function ReadSubs(s: String): Boolean;
var srec: TSearchRec; found: Integer;
begin
 RESULT := FALSE;
 found := FindFirst(Slash(s)+'*.*', faDirectory, srec);
  try
   while not(RESULT) and (found=0) do begin
    if ((srec.Attr and faDirectory) <> 0) and ((srec.Name <> '.') and (srec.Name <> '..')) then
    RESULT := TRUE;
    found := FindNext(srec);
   end;
  finally
   FindClose(srec);
  end;
end;
var rec: TSearchRec;
begin
 if FindFirst(Slash(ADirectory)+'*.*', faDirectory, rec) = 0 then begin
  try
   repeat
    if ((rec.Attr and faDirectory) <> 0) and ((rec.Name <> '.') and (rec.Name <> '..')) then
     begin
      with Tree.Items.AddChild(Start, rec.Name) do
       if ReadSubs(Slash(ADirectory)+rec.Name) then
      HasChildren := True;
     end;
   until FindNext(rec) <> 0;
  finally
   FindClose(rec);
  end;
 end;
end;
Delphi-Quellcode:
function TFenster.Slash(s: String): String;
begin
 RESULT := s+'\'
end;
Delphi-Quellcode:
procedure TFenster.lDirExpanding(Sender: TObject; Node: TTreeNode;
  var AllowExpansion: Boolean);
var i: Integer;
begin
 for i := 0 to Node.Count-1 do
  Node.getFirstChild.Delete;
 GetDirs(Slash(Paren(Node, lDir)), lDir, Node);
 Node.AlphaSort(FALSE)
end;
Delphi-Quellcode:
procedure TFenster.FormCreate(Sender: TObject);
begin
 lDir.Items.BeginUpdate;
 GetDirs('C:', lDir, lDir.Items.AddChild(nil, 'C:'));
 lDir.Items.EndUpdate;
 lDir.AlphaSort(TRUE);
 lDir.Items.Item[0].Expand(FALSE);
end;


bitte helft mir, den code zu vereinfachen oder verbessern.
z.b. für ein leichteres einlesen bei schon vorhandenen einträgen (beim expandieren werden zuerst alle gelöscht, dann neu eingelesen) oder für leichteres erkennen, ob ein unterordner vorhanden ist.

PLEASE HELP!!
  Mit Zitat antworten Zitat