Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Junior Developer
43 / 43 / 7
Регистрация: 08.06.2009
Сообщений: 261
1

Поиск файлов в определенной папке

20.03.2010, 18:09. Показов 1240. Ответов 7
Метки нет (Все метки)

ребят помогите никак не могу понять почему одна процедура работает, а остальные нет, хотя делал всё по тому же способу...

декларация
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
  private
    { Private declarations }
  public
music, movie, pics: integer;
SR: TSearchRec; //ïîèñêîâàÿ ïåðåìåííàÿ
search_result: string;
name, name_m, name_p: TFileName;
 
procedure find_music;
procedure find_movie;
procedure find_pics;
    { Public declarations }
  end;
вот процедура что работает...
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.find_music;
begin
    music:= FindFirst('C:\Documents and Settings\user\My Documents\My Music\muza\*.mp3', faAnyFile, SR);
      while music = 0 do begin
        name:= SR.Name;
        music:= FindNext(SR);
        listbox1.Items.Add(name);
      end;
showmessage('Ïîèñê çàâåðø¸í!' + #13 + 'Íàéäåíî ' + IntToStr(listbox1.Items.Count) + ' ôàéëà');
FindClose(SR);
end;

а вот всё остальное, что не работает....
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//ïîèñê ôèëüìîâ
procedure TForm1.find_movie;
begin
    movie:= FindFirst('*.avi', faAnyFile, SR);
      while movie = 0 do begin
        name_m:= SR.Name;
        movie:= FindNext(SR);
        listbox1.Items.Add(name_m);
      end;
//ïðîâåðêà íà ñóùåñòâîâàíèå ôàéëîâ
  if listbox1.Items.count = 0 then begin
    ShowMessage('Ôàéëû îòñóòñâóþò!!!');
  end;
showmessage('Ïîèñê çàâåðø¸í!' + #13 + 'Íàéäåíî ' + IntToStr(listbox1.Items.Count) + ' ôàéëà');
FindClose(SR);
end;
 
//ïîèñê êàðòèíîê íåðàáîòàåò
procedure TForm1.find_pics;
begin
    pics:= FindFirst('*.jpg', faAnyFile, SR);
      while pics = 0 do begin
        name_p:= SR.Name;
        pics:= FindNext(SR);
        listbox1.Items.Add(name_p);
      end;
//ïðîâåðêà íà ñóùåñòâîâàíèå ôàéëîâ
  if listbox1.Items.count = 0 then begin
    ShowMessage('Ôàéëû îòñóòñâóþò!!!');
    exit;
  end;
showmessage('Ïîèñê çàâåðø¸í!' + #13 + 'Íàéäåíî ' + IntToStr(listbox1.Items.Count) + ' ôàéëà');
FindClose(SR);
end;
проверял брейкпоинтами... и прям тоже не пойму в чём дело...
в работающей процедуре строчка while music = 0 переменная music = 0 и всё работает хорошо..
а в других процедурах moviе = 2 & pics = 2 это мне показывает брейкпоинт...
так вот, вопрос из-за чего эти переменные стали равны 2 Оо если в них вообще ничего нету...
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2010, 18:09
Ответы с готовыми решениями:

Поиск имен всех файлов, находящихся в определенной папке
Народ как записать (например в Memo) имена всех файлов, находящихся в определеннои папке??

Поиск файлов по маске в папке с множеством подпапок
Скорее всего с этим уже все сталкивались. Поэтому просто покажите где искать?

Поиск файлов по определенной маске
Подскажите, плиз, как сделать сабж. Т.е. мне нужно найти все файлы с расширением *.txt на диске C:...

Поиск в папке и подпапке всех файлов за сегодняшнюю дату
Доброго времени суток. Помогите пожалуйста, нужно запилить процедуру поиска файлов в папке и ее...

7
Junior Developer
43 / 43 / 7
Регистрация: 08.06.2009
Сообщений: 261
20.03.2010, 18:14  [ТС] 2
если что, то вот архив с программой...
0
Вложения
Тип файла: zip katalogizator.zip (590.9 Кб, 25 просмотров)
Добрый самаритянин
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
20.03.2010, 18:38 3
Цитата Сообщение от velikijmerlin Посмотреть сообщение
pics:= FindFirst('*.jpg', faAnyFile, SR);
что-то я не припомню разве вместе с маской ненадо указывать путь поиска хотябы диск??

Добавлено через 6 минут
я раньше писал так
Delphi
1
FindFirst(StartDir + Mask, faAnyFile, SearchRec)
где mask это маска поиска ну например *.jpg а startDir начальная папка для поиска
0
Junior Developer
43 / 43 / 7
Регистрация: 08.06.2009
Сообщений: 261
20.03.2010, 18:56  [ТС] 4
ну я делал так
Delphi
1
FindFirst('C:\*.jpg', faAnyFile, SearcgResult);
но это ничего не меняет... тоже самое... переменная всё равно больше 0...
0
Добрый самаритянин
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
20.03.2010, 19:23 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

а может просто файлов нет?))

Добавлено через 3 минуты
смотри на диске D у мну была одна картинка разреш bmp и прога ее нашла

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure find_pics;
begin
    pics:= FindFirst('D:\*.bmp', faAnyFile, SR);
      while pics = 0 do begin
        name_p:= SR.Name;
        pics:= FindNext(SR);
        form1.listbox1.Items.Add(name_p);
      end;
//проверка на существование файлов
  if form1.listbox1.Items.count = 0 then begin
    ShowMessage('Файлы отсутсвуют!!!');
    exit;
  end;
showmessage('Поиск завершён!' + #13 + 'Найдено ' + IntToStr(form1.listbox1.Items.Count) + ' файла');
FindClose(SR);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
find_pics;
end;
Добавлено через 45 секунд
я так понял тебе нужен поиск только в одной папке без подкаталогов?
0
Junior Developer
43 / 43 / 7
Регистрация: 08.06.2009
Сообщений: 261
20.03.2010, 21:00  [ТС] 6
John_Pa9JIbHuK, надо чтобы он искал во всех каталогах...
так же как поиск самой винды...

а разве он так не ищет? потому что именно по пути диска картинок нет... а если брать по определённой папке, где есть картинки, то он находит....
как быть?
0
Добрый самаритянин
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
20.03.2010, 21:28 7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure GetAllFiles(mask: string);
var
  search: TSearchRec;
  directory: string;
begin
  directory := ExtractFilePath(mask);
  if FindFirst(mask, faanyFile, search) = 0 then
  begin
    repeat
       Form1.ListBox1.Items.Add(directory + search.Name);
    until FindNext(search) <> 0;
  end;
   if FindFirst(directory + '*.*', faDirectory, search) = 0 then
  begin
    repeat
      if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then
        GetAllFiles(directory + search.Name + '\' + ExtractFileName(mask));
    until FindNext(search) <> 0;
    FindClose(search);
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  directory: string;
  mask: string;
begin
    Listbox1.Items.Clear;
    directory := 'C:\temp\';
    mask:='*.jpg';
    GetAllFiles(directory + mask);
end;
 
 
end.
1
Junior Developer
43 / 43 / 7
Регистрация: 08.06.2009
Сообщений: 261
21.03.2010, 21:49  [ТС] 8
John_Pa9JIbHuK, а как сделать так, чтобы выводилось только имя файла без полного пути?

Добавлено через 2 часа 3 минуты
вопрос отменяется, уже разобрался..)))

З.Ы вот что значит когда не сам код пишешь..))) надо ещё и смотреть что и как используетсо)))
ЗЗЫ ещё раз спасибо..)))

Добавлено через 29 минут
John_Pa9JIbHuK, а можно ещё вопрос задать, как тогда мне теперь переделать операцию открытия файла, потому что открывает только то что находиться по забитому адресу... а не всё что находиться в listbox'e?

вот код..
Delphi
1
2
3
4
5
    if (listbox1.ItemIndex >= 0) and
       (treeview1.Selected.Index = 0)
     then begin
      shellexecute(handle,'open',PAnsiChar('C:\Documents and Settings\user\My Documents\My Music\muza\' + listbox1.Items[listbox1.itemindex]),nil,PAnsiChar(ExtractFilePath(name)),sw_show);
    end
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2010, 21:49

Поиск файлов по определённой маске в указанной папке без учёта содержимого её подкаталогов
Всем привет. Встала очередная задача, не могу самостоятельно разобраться. Ниже выложен код,...

Список файлов в определенной папке
Подскажите пожалуйста!!! Есть скрипт: &lt;?php $sPath = '.'; $dDir = opendir($sPath); ...

Количество файлов в определенной папке
Можно средствами C# подсчитать количество файлов в определенной папке?%)

Копирование определенной строки из файлов в папке
Добрый день, уважаемые! Подскажите пожалуйста макрос. Есть папка, в которой лежат книги экселя....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.