Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2014, 17:00   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию Lazarus в Linux - Поиск файлов в папке

Здравствуйте.
Lazarus + Kubuntu + KDE4.
Как найти все файлы и подпапки в директории /home/god/pictures/ ?
BLACK_RAIN вне форума Ответить с цитированием
Старый 07.10.2014, 18:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

По идее FindFirst()...FindNext() должны действовать.
Примерно так: http://www.programmersforum.ru/showthread.php?t=6639
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.10.2014, 09:23   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Да, но он почему-то не все файлы/папки находит. Не пойму, что не так.
вот код:
Код:
procedure find(dir : string);
var
  sr : TSearchRec;
begin
if FindFirst(dir+'/*.*',faAnyFile, sr)=0 then
repeat
  if (sr.Name<>'.') and (sr.Name<>'..') then
  begin
      if ((sr.Attr and fahidden)=0) and ((sr.Attr and fadirectory)=0) then
      begin
        form1.list.Items.Add(dir+'/'+sr.Name);
      end;
      if ((sr.Attr and fahidden)=0) and ((sr.Attr and fadirectory)<>0) then
      begin
        find(dir+'/'+sr.Name);
      end;
  end;
  form1.list.ItemIndex:= form1.list.Count-1;
  application.ProcessMessages;
until FindNext(sr)<>0;
SysUtils.FindClose(sr);
end;
вызов:
Код:
form1.list.clear;
find('/home/god');
или
find('/home/god/Изображения');
Находит не все файлы/папки, либо вообще ничего.
BLACK_RAIN вне форума Ответить с цитированием
Старый 08.10.2014, 11:22   #4
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Кажется, решилось! Надо было
Код:
if FindFirst(dir+'/*',faAnyFile, sr)=0 then
вместо
Код:
if FindFirst(dir+'/*.*',faAnyFile, sr)=0 then
BLACK_RAIN вне форума Ответить с цитированием
Старый 08.10.2014, 11:23   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
  begin
      if ((sr.Attr and fanyfile)<>0) and ((sr.Attr and fadirectory)=0) then
      begin
        form1.list.Items.Add(dir+'/'+sr.Name);
      end else
      if (sr.Attr and fadirectory)<>0 then
      begin
        find(dir+'/'+sr.Name);
      end;
  end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перекомпиляция программы(простой) Win Lazarus в Linux Lazarus Toxifer Фриланс 0 27.11.2012 22:46
Поиск файлов в папке и ПОДПАПКАХ trafbite Общие вопросы Delphi 5 03.09.2012 19:54
Linux, поиск файлов MDmitry Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 3 06.12.2009 23:30
Как сделать поиск файлов в папке BETONOMESHALKA Общие вопросы Delphi 3 01.02.2008 22:43
Отслеживает появление в папке файлов. слежение за определенным файлом в определенной папке. RammFan Win Api 1 09.06.2007 11:09