Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Поиск файлов   Найти похожие ветки 

 
Dot   (2005-11-05 17:17) [0]

Здравствуйте мастера!
Меня интересует вопрос поиска файла во всех директориях.
Вот я набросал код
------------
program FindFiles;
uses Windows;
var
File_data: _WIN32_FIND_DATA;
File_Name: PChar;
hFind    : Cardinal;
begin

File_Name:="*.txt";

hFind := FindFirstFile(File_Name, File_Data);
if hFind = INVALID_HANDLE_VALUE then
 begin
   MessageBoxA(0, PChar(GetLastError()), "!", 0);
   exit;
 end
else
  begin
   MessageBoxA(0, File_Data.cFileName,"!",0);
   FindClose(hFind);
  end;
end.
------------------------
Не совершенство конечно, но дело не в этом. Все это происходит в пределах текущей директории проекта..
Вот и вопрос . помогите советом или кодом (что лучше всего). Как искать во всех(заданных) директориях.

Заранее огромное спасибо.
З.Ы. использую только модуль Windows, естественно никаких TSearchRec итд


 
Zeqfreed ©   (2005-11-05 17:52) [1]

Dot   (05.11.05 17:17)
program flist;

{$APPTYPE CONSOLE}

uses
 Windows;

procedure Output(const FileName : String);
var
 p : PChar;
begin
 p := PChar(FileName);
 CharToOEM(p, p);
 WriteLn(p);
end;

procedure AddTrailingBackslash(var Str : String);
begin
 if not (Str[length(Str)] in ["/", "\"]) then Str := Str + "\";
end;

procedure DoSearch(Directory : String; const SearchSubdirectories : Boolean);
var
 fd : TWin32FindData;
 h : Cardinal;
begin
 AddTrailingBackslash(Directory);

 Output("Поиск по директории: " + Directory);
 h := FindFirstFile(PChar(Directory + "*"), fd);
 if (h <> INVALID_HANDLE_VALUE) then begin
  repeat
   if (fd.cFileName[0] <> ".") and (fd.cFileName <> "..") then
    if ((fd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) then begin
     DoSearch(Directory + fd.cFileName, SearchSubdirectories);
    end else
     Output(fd.cFileName);
  until (FindNextFile(h, fd) = FALSE);
 end;
end;

begin
 DoSearch(ParamStr(1), true);
 ReadLn;
end.



Страницы: 1 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
2-1130604470
Win_sido
2005-10-29 20:47
2005.11.20
Delfi 7


2-1131017434
W
2005-11-03 14:30
2005.11.20
Ошибки компиляции


14-1130261828
Джо
2005-10-25 21:37
2005.11.20
Perl-функция pack


6-1123492221
Tj
2005-08-08 13:10
2005.11.20
FtpServer


3-1128584311
Andrushk
2005-10-06 11:38
2005.11.20
TSQLStoredProc и схема