Avatar billede aasuper Nybegynder
23. marts 2004 - 19:52 Der er 3 kommentarer og
1 løsning

Liste med undermapper

Hej -

Det antages, at jeg har en mappe c:\mappe
Nu vil jeg gerne have lagt navnene på alle mappens undermapper ind i en dynamisk tabel af tekststrenge.

Hvordan gøres det nemmest?

>>AASuper
Avatar billede hrc Mester
23. marts 2004 - 20:24 #1
type
  TSubDirs = class(TStringList)
  private
    fPath : string;
    fOrgPath : string;
  public
    constructor Create(const aPath : string);
    procedure Refresh;
    property Path : string read fPath;
  end;

implementation

constructor TSubDirs.Create(const aPath : string);
begin
  inherited Create;
  fPath := aPath;
  GetDir(0,fOrgPath);

  self.Refresh;
end;

procedure TSubDirs.Refresh;
var
  sr : TSearchRec;
  bOK : boolean;
begin
  chdir(fPath);
  BeginUpdate;
  try
    Clear;
    bOK := FindFirst('*',faDirectory,sr) = 0;
    try
      while bOK do begin
        if sr.Name[1] <> '.' then
          Add(sr.name);
        bOK := FindNext(sr) = 0;
      end; // while
    finally
      FindClose(sr);
    end; // try
  finally
    EndUpdate;
    chdir(fOrgPath);
  end;
end;
Avatar billede hrc Mester
23. marts 2004 - 20:30 #2
En lille demo med en TListBox ser sådan ud:

procedure TfrmMain.Button1Click(Sender: TObject);
var
  SubDirs : TSubDirs;
begin
  SubDirs := TSubDirs.Create('c:\program files');
  try
    ListBox1.Items.Assign(SubDirs);
  finally
    SubDirs.Free;
  end; // try
end;

P.S. Borrisholt har lavet en sød lille klasse der bruger Windows' "NuSkerEerNogetIKataloget" message. Derved bliver man informeret så snart der sker det mindste i kataloget - Her kunne man passende placere en TSubDirs.Refresh.

Linket er: www.borrisholdt.com, led efter FindFirstNotify.
Avatar billede borrisholt Novice
23. marts 2004 - 20:55 #3
Avatar billede aasuper Nybegynder
23. marts 2004 - 21:15 #4
Super. Det var lige det. Tak for hjælpen.

>>AASuper
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester