Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу здесь за 20 тыс руб в месяц! alarforum@yandex.ru


Ответ
 
Опции темы
Старый 16.06.2009, 17:36   #1
blackstersl
Форумчанин
 
Аватар для blackstersl
 
Регистрация: 23.08.2008
Сообщений: 374
Вопрос Как узнать все папки в указаной директории?

Привет всем. Вопрос: как можно в combobox записать items из дириктории напрмер D:\program, где item-ы будут названия папок которые лежат в этой папке? спасибо.
blackstersl вне форума Ответить с цитированием
Старый 16.06.2009, 21:44   #2
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Код:
procedure ListFileDir(Path: string; FileList: TStrings);
 var
   SR: TSearchRec;
 begin
   if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
   begin
     repeat
       if (SR.Attr <> faDirectory) then
       begin
         FileList.Add(SR.Name);
       end;
     until FindNext(SR) <> 0;
     FindClose(SR);
   end;
 end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ListFileDir('C:\Program Files\', ComboBox1.Items);
end;
xor eax, eax
xchg [eax], eax

Последний раз редактировалось MalCer; 16.06.2009 в 21:55.
MalCer вне форума Ответить с цитированием
Старый 16.06.2009, 21:58   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,524
По умолчанию

Эта функция не укажет скрытые и системные папаки . только сегодня возился. пришлось доставать исходник SysUtils.pas и редактировать его. вот три функции, которые лучше всего включть в свой код:

//----- извлечение атрибутов файлов --------------------------------------------
Код:
function FindMatchingFile(var F:TSearchRec):Integer;
begin
   with F do
   begin
      while(FindData.dwFileAttributes and ExcludeAttr<>0)do
      if not FindNextFile(FindHandle,FindData)then
      begin
         Result:=GetLastError;
         Exit;
      end;
      Size:=FindData.nFileSizeLow;
      Attr:=FindData.dwFileAttributes;
      Name:=FindData.cFileName;
   end;
   Result:=0;
end;

//----- переделанная функция, показывающая скрытые и системные папки -----------
function FindFirstNew(const Path:string;Attr:Integer;var F:TSearchRec):Integer;
const faSpecial=faVolumeID;
begin
   F.ExcludeAttr:=not Attr and faVolumeID;
   F.FindHandle:=FindFirstFile(PChar(Path),F.FindData);
   if F.FindHandle <> INVALID_HANDLE_VALUE then
   begin
      Result:=FindMatchingFile(F);
      if(Result<>0)then FindClose(F);
   end
   else Result:=GetLastError;
end;

//----- выводим папки ----------------------------------------------------------
procedure TForm1.PrintDirect(Put:string);
var SR:TSearchRec;
begin
   q:=0;
   if(FindFirstNew(Put+'*.',faDirectory,SR)=0)then//если файлы есть
   begin
      repeat
       if(SR.Name<>'.')and(SR.Name<>'..')then
       begin
          ListBox1.Items.Add('папка  '+SR.Name);
          q:=q+1;//нумерация
          sps[q]:=SR.Name;//заносим все имена в массив
       end;
      until FindNext(SR)<>0;
   end;
   FindClose(SR);
end;
пользуйся на здоровье!

Put - это тот каталог или диск, на котором хочется узнать наличие папок. Попробуй для Put:='C:\Windows\';
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось Stilet; 18.06.2009 в 11:14.
NetSpace вне форума Ответить с цитированием
Старый 16.06.2009, 23:13   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,728
По умолчанию

Все папки она ищет нормально. Не зря там атрибут faAnyFile.
FaTaL вне форума Ответить с цитированием
Старый 17.06.2009, 12:23   #5
blackstersl
Форумчанин
 
Аватар для blackstersl
 
Регистрация: 23.08.2008
Сообщений: 374
По умолчанию

А вот ещё вопрос: как сделать тоже самое только папки мы выбираем из shelltreeview а items(имя папок) записываем в listbox1. Спасибо.
blackstersl вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать все IP-адреса компьютера. Proger10 Работа с сетью в Delphi 8 18.02.2012 23:14
Как в указанной директории узнать названия всех папок evgenrpo Общие вопросы C/C++ 5 08.06.2009 13:20
скопировать все содержимое папки в другую DannyKing Помощь студентам 6 27.03.2009 09:50
Как узнать расположение папки мои документы? apromix Win Api 4 08.05.2008 14:04
Выбрать имя папки из директории Македонский Общие вопросы Delphi 15 29.08.2007 09:48


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840