Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.05.2008, 14:09
kisska89 kisska89 вне форума
Прохожий
 
Регистрация: 15.05.2008
Сообщения: 4
Репутация: 10
По умолчанию Как найти файл на жестком диске?

мне нужно найти файл на диске... имя и расширение известно соответсвенно)
Ответить с цитированием
  #2  
Старый 19.05.2008, 14:56
Ozerich Ozerich вне форума
Новичок
 
Регистрация: 11.04.2008
Адрес: В городе-герой Минск
Сообщения: 69
Репутация: 10
По умолчанию

Код:
var
filename:string; //имя файла,которого ищем
Cdir:string;     //имя папки,в которой надо искать
n:integer;       //кол-во найденных файлов

procedure find;
var search:Tsearchrec;
begin
getDir(0,Cdir);
if Cdir[length(Cdir)]<>'\' then Cdir:=Cdir+'\';
if findfirst(filename,faAnyFile,search)=0 then
repeat
if (search.Attr and faAnyFile)=search.Attr then  begin
form1.Memo1.Lines.Add(Cdir+search.Name);
inc(n);
end;
until findnext(search)<>0;
if findfirst('*',faAnyFile,search)=0 then
repeat
if (search.Attr and faDirectory)=faDirectory then
if search.Name[1]<>'.' then begin
chdir(search.Name);
find;
chdir('..');
end;
until findnext(search)<>0;
end;

Последний раз редактировалось Ozerich, 19.05.2008 в 15:14.
Ответить с цитированием
  #3  
Старый 19.05.2008, 17:17
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

Можно попроще сделать, ибо рекурсия рулит. Параметры : Path - где искать, можно указывать диск (С:, D:...), SearchMask - маска, для поиска определенного файла можно написать тут имя файла, Memo - обычный мемо редактор, куда будут выводится результаты поиска.
Код:
  procedure Find(const Path, SearchMask : String; var Memo : TMemo);
  var
    fs : TSearchRec;
    i : Integer;
  begin
    Application.ProcessMessages;
    i := FindFirst(Path + '\' + SearchMask, faAnyFile, fs);
    while i = 0 do begin
      Memo1.Lines.Add(path + '\' + fs.Name);
      i := FindNext(fs);
    end;
    i := FindFirst(Path + '\*', faDirectory or faAnyFile, fs);
    while i = 0 do begin
      if (fs.Name <> '.') and (fs.Name <> '..') and
         ((fs.Attr and faDirectory) <> 0) then
        Find(Path + '\' + fs.Name, SearchMask, Memo);
      i := FindNext(fs);
    end;
    FindClose(fs);
  end;
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter