Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Получение списка директорий по заданному пути


Автор: InfMag 27.1.2006, 12:00
Мне нужно получить список папок по заданному пути, допустим забить его в листбокс.
Если путь будет: C:\ то список будет примерно таким:
Код

Vasya
Documents And Settings
Windows
Folder

И т.п.
Ну или взять: C:\Vasya там будет примерно:
Код

Folder1
Folder2
Folder of Vasya


Заранее спасибо! smile

Автор: Rennigth 27.1.2006, 12:07
FindFirst FindNext

Автор: ~FoX~ 27.1.2006, 12:10
Юзаем поиск по форуму или качаем ДРКБ - милион раз тема поднималась...

Автор: InfMag 27.1.2006, 12:29
~FoX~
Сорри, а ДРКБ это что?
Скажи как енто грамотно пишется, чтоб я в поиске нормально смог откопать.

Автор: Snowy 27.1.2006, 12:32
Подними глазки наверх страницы и прочитай правила.
Там все написано.
Цитата

90% ответов на свои вопросы можно найти в http://www.drkb.ru/ - крупнейшем в рунете сборнике материалов по Дельфи

Автор: InfMag 27.1.2006, 12:40
Rennigth
Чо-то я не понимаю как этим пользоваться:
Код

procedure TMainForm.Button3Click(Sender: TObject);
var rec:TSearchRec;
begin
  FindFirst('C:\', 0, rec);
  FindNext(rec);
end;

Добавлено @ 12:41
Snowy
Сорри за трипер smile

Так, уже прогресс есть smile

FindFirst('C:\', faDirectory, rec);
FindNext(rec);

Тогда поюзаю ДРКБ ;)

Автор: Rennigth 27.1.2006, 12:42
эх, что-то вроде:
Код

function GetDirs(const ADir: string): TStrings;
var
  lSR: TSearchRec;
  lDir, lTmp: string;
begin
  Result := TStringList.Create;
  if DirectoryExists(ADir) then
  begin
    lDir := IncludeTrailingPathDelimiter(ADir) + '*.*';
    if (FindFirst(lDir, faAnyFile, lSR) = 0) then
    begin
      try
        repeat
          if (lSR.Name <> '.') and (lSR.Name <> '..') then
          begin
            lTmp := ADir + lSR.Name;
            if DirectoryExists(lTmp) then
              Result.Add(lTmp);
          end;
        until FindNext(lSR) <> 0;
      finally
        FindClose(lSR);
      end;
    end;
  end;
end;


Автор: Romikgy 27.1.2006, 15:02
Эх и я напишу smile
Код

procedure TForm1.Button1Click(Sender: TObject);
var str:string;
  i:longint;
begin
 str:='c:\';
 ListBox1.Clear;
 SendMessage(ListBox1.Handle,LB_DIR,DDL_DIRECTORY    ,
 Longint(Pchar(str+'*.*')));
 for i:=ListBox1.Count-1 downto 0 do
 if (AnsiPos('[',ListBox1.Items[i])=1) and (AnsiPos(']',ListBox1.Items[i])=Length(ListBox1.Items[i]))
  then
   ListBox1.Items[i]:=MidStr(ListBox1.Items[i],2,
   length(ListBox1.Items[i])-2)
   else ListBox1.Items.Delete(i);
end;

Автор: InfMag 30.1.2006, 15:12
Всем большое спасибо smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)