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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2009, 23:31   #1
Serious
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 29
По умолчанию Файлы и их поиск

У меня такая проблема. Я думаю проще чем свой код скидывать попросить вас о новом.
Мне нужен кусок кода в котором будет происходить поиск всех файлов внутри папки DIR
где DIR это переменная в строковом виде которая задаётся раньше.
И каждый найденный файл записывается допустим в строковый масив.
Если реально это зделать то напишите через процедуру.
И скажите как её описывать в верхней части кода.
Serious вне форума Ответить с цитированием
Старый 09.02.2009, 23:54   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

http://programmersforum.ru/showthrea...E0%E9%EB%EE%E2
На форуме есть "Поиск". Ввели бы туда фразу "поиск файлов" и давно бы уже имели результат.
mihali4 вне форума Ответить с цитированием
Старый 09.02.2009, 23:55   #3
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  F: TSearchRec;
  DIR: string;
  Attr: Integer;
begin
  {Искать все файлы в заданной директории}
  DIR := 'C:\*.*';
  Attr := faAnyFile - faDirectory;

  FindFirst(DIR, Attr, F);

  {Если хотя бы один файл найден, то продолжить поиск}
  if F.name <> '' then
  begin
    ListBox1.Items.Add(F.name); {Добавление в TListBox имени найденного файла}
    while FindNext(F) = 0 do
      ListBox1.Items.Add(F.name);
  end;
  FindClose(F);
end;
Здесь выводится в ListBox, и советую так и оставить, просто сделать его скрытым, и с его Items обращаться как с элементами массива.
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума Ответить с цитированием
Старый 10.02.2009, 00:14   #4
Serious
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 29
По умолчанию

mihali4
всё круто но как я понял там в оперделённой папке в подпаки он не будет влазить
Serious вне форума Ответить с цитированием
Старый 10.02.2009, 00:20   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Serious Посмотреть сообщение
mihali4
всё круто но как я понял там в оперделённой папке в подпаки он не будет влазить
Никто не мешает подправить предложенную процедуру для возможности рекурсивного вызова...
Код:
procedure FindFiles(StartFolder, Mask: String; List: TStrings; ScanSubFolders: Boolean); 
var 
SearchRec: TSearchRec; 
FindResult: Integer; 
begin
List.BeginUpdate;
try
StartFolder:=IncludeTrailingBackslash(StartFolder);
FindResult:=FindFirst(StartFolder+'*.*', faAnyFile, SearchRec);
try
while FindResult = 0 do
begin
if SearchRec.Attr=faDirectory then
begin
if ScanSubFolders and ((SearchRec.Name<>'.') and (SearchRec.Name<>'..')) then
FindFiles(StartFolder+SearchRec.Name, Mask, List, ScanSubFolders);
end else
begin
if MatchesMask(SearchRec.Name, Mask) then
List.Add(StartFolder+SearchRec.Name);
end;
FindResult:=FindNext(SearchRec); 
end;
finally 
FindClose(SearchRec); 
end;
finally 
List.EndUpdate; 
end;
end;
З.Ы. В uses добавить Masks.

Последний раз редактировалось mihali4; 10.02.2009 в 01:44.
mihali4 вне форума Ответить с цитированием
Старый 10.02.2009, 00:25   #6
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

Цитата:
Мне нужен кусок кода в котором будет происходить поиск всех файлов внутри папки DIR
Цитата:
всё круто но как я понял там в оперделённой папке в подпаки он не будет влазить
хмм... а в вопросе-то сказано именно про файлы, а не файлы и подпапки...
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума Ответить с цитированием
Старый 10.02.2009, 00:25   #7
Serious
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 29
По умолчанию

mihali4
я вставил код уже goblinyara
можешь его подправить под это дело в нём проще будет редактировать. Заранее блогадарен
фаилы которые в подпапках то же
Serious вне форума Ответить с цитированием
Старый 10.02.2009, 00:53   #8
Serious
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 29
По умолчанию

Цитата:
if MatchesMask(Name, Mask) then List.Add(StartFolder+Name);
Вот здесь выдаёт ошибку что неизвестный индификатор MatchesMask
Serious вне форума Ответить с цитированием
Старый 10.02.2009, 04:18   #9
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

Код:
procedure TForm1.FindFile(Dir:String);
Var
  SR:TSearchRec;
  FindRes: integer;
begin
  FindRes:=FindFirst(dir+'*.*',faAnyFile,SR);

  While FindRes=0 do
  begin
  application.ProcessMessages;

    if ((SR.Attr and faDirectory)=faDirectory) and
    ((SR.Name='.')or(SR.Name='..')) then
    begin
    FindRes:=FindNext(SR);
    Continue;
    end;

    if ((SR.Attr and faDirectory)=faDirectory) then
    begin
    FindFile(Dir+SR.Name+'\');
    FindRes:=FindNext(SR);
    Continue;
    end;

    CurrentFile.Caption:=dir+sr.Name; // текущий файл

    FindRes:=FindNext(SR);
  end;
  FindClose(SR);
end;
вот рабочий... если что то не получается, то сам пробуй разобраться а не нас проси
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 10.02.2009, 04:21   #10
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Serious Посмотреть сообщение
Вот здесь выдаёт ошибку что неизвестный индификатор MatchesMask
Читать надо всё!

Цитата:
Сообщение от mihali4 Посмотреть сообщение
З.Ы. В uses добавить Masks.
Altera вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы в С++ Sanakan Помощь студентам 2 28.12.2008 14:24
Файлы. BR@BUS Фриланс 1 11.05.2008 15:35
Файлы xxxPascalxxx Помощь студентам 4 11.03.2008 00:35
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53