Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизПоиск файлов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c