Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi GetSubDirs + AddDirSeparator: HiddenDirs Problem! (https://www.delphipraxis.net/77056-getsubdirs-adddirseparator-hiddendirs-problem.html)

Go2EITS 14. Sep 2006 08:40


GetSubDirs + AddDirSeparator: HiddenDirs Problem!
 
Hallo DP,

ich habe das Problem, dass auf versteckte Directories mit nachfolgendem Code nicht zugegriffen wird.
Ich habe den Code um AddDirSeparator ergänzt, weil der originale Torrycode nicht geht, bzw. die Funktion AddDirSeparator nirgends gefunden habe.

Hier der Original-Code:
Delphi-Quellcode:
// ...list all Subdirectories of a Directory? Autor: Martin Schulz
procedure GetSubDirs(const sRootDir: string; slt: TStrings);
var
  srSearch: TSearchRec;
  sSearchPath: string;
  sltSub: TStrings;
  i: Integer;
begin
  sltSub := TStringList.Create;
  slt.BeginUpdate;
  try
    sSearchPath := AddDirSeparator(sRootDir);
    if FindFirst(sSearchPath + '*', faDirectory, srSearch) = 0 then
      repeat
        if ((srSearch.Attr and faDirectory) = faDirectory) and
          (srSearch.Name <> '.') and
          (srSearch.Name <> '..') then
        begin
          slt.Add(sSearchPath + srSearch.Name);
          sltSub.Add(sSearchPath + srSearch.Name);
        end;
      until (FindNext(srSearch) <> 0);

    FindClose(srSearch);

    for i := 0 to sltSub.Count - 1 do
      GetSubDirs(sltSub.Strings[i], slt);
  finally
    slt.EndUpdate;
    FreeAndNil(sltSub);
  end;

//Meine Ergänzung, damit es funktioniert.
Function AddDirSeparator(const Root:String):String;
  Var h:string;
begin
  Result:=Root;
  h:=Root;
  // h, da Root als const nicht verändert werden kann
  if h[Length(h)]<>'\' then h:=h+'\';
  Result:=h;
end;
end;
Ich weiss nicht, ob ein faHidden genügen würde. Ich habe aber keine Ahnung, wie ich das einfügen sollte. Wisst Ihr weiter?
Danke für die Mühe im voraus und beste Grüße
Go2EITS

Go2EITS 14. Sep 2006 09:26

Re: GetSubDirs + AddDirSeparator: HiddenDirs Problem!
 
Wer (in der DP) suchet der findet:

Die Zeile
Delphi-Quellcode:
if FindFirst(sSearchPath + '*', faDirectory, srSearch) = 0 then
muss geändert werden in:
Delphi-Quellcode:
if FindFirst(sSearchPath + '*', faDirectory or faHidden, srSearch) = 0 then
Es scheint zu funktionieren, zumindestens bei mir klappt es. Falls noch Änderungen notwendig sind,
bitte hier posten. Danke.

Beste Grüße
Go2EITS

Luckie 14. Sep 2006 09:28

Re: GetSubDirs + AddDirSeparator: HiddenDirs Problem!
 
Delphi-Referenz durchsuchenIncludeTrailingPathDelimiter


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz