Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизПоиск файлов Найти похожие ветки
← →
Dot (2006-01-05 18:30) [0]Уважаемые мастера.
Нашел тут конструкцию для поиска файлов на диске.
все работает замечательно ищу все exe файлы и записываю их в файл
(writefile; это так для простоты написал чтобы не засорять основной код не обращайте свое внимание на это.. не в этом проблема)
Так вот процедуре мы задаем место начала поиска т.е. в нашем случает C:\
Вопрос: А как заставить проводить поиск файлов по всем дискам? и если можно то еще и по сетевым дискам?
P.S. кому интересно скажу (но давайте постараемся проявить снисходительность и обсуждать изначальный вопрос без лишнего флейма) - пишу поисковик для локалки
var
fndFile,fndFolder: WIN32_FIND_DATA;
procedure FindAndSave (const StartD: String);
var
hSRFile,hSRFolder: THandle;
begin
hSRFile := FindFirstFile(PChar(StartD+"*.EXE"),fndFile);
if hSRFile <> INVALID_HANDLE_VALUE then
begin
repeat
if (fndFile.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) =
FILE_ATTRIBUTE_DIRECTORY
then
Continue;
MessageBoxA(0,PCHar(StartD+fndFile.cFileName),nil,0);
WriteFile;
until not FindNextFile(hSRFile,fndFile);
Windows.FindClose(hSRFile);
end;
hSRFolder := FindFirstFile(PChar(StartD+"*.*"),fndFolder);
if hSRFolder <> INVALID_HANDLE_VALUE then
begin
repeat
if ((fndFolder.dwFileAttributes and
FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and
(fndFolder.cFileName <> "..") and (String(fndFolder.cFileName) <> ".")
then
FindAndSave(StartD+fndFolder.cFileName+"\");
until not FindNextFile(hSRFolder,fndFolder);
Windows.FindClose(hSRFolder);
end;
end;
begin
FindAndSave("C:\");
end.
← →
Anatoly Podgoretsky © (2006-01-05 18:46) [1]Параметр StartD
← →
Dot (2006-01-05 18:49) [2]спасибо, эт я знаю, в этом то и проблема как его поменять? на что?
буду очень признателен..
просто пытался и на "//" и на Мой компутер даже уж от бессилия =)
← →
Джо © (2006-01-05 18:50) [3]Задача разбивается на две:
1. Найти все логические диски. Или общие сетевые ресурсы.
2. Искать по каждому, последовательно перебирая.
Что непонятно-то?
← →
Gero © (2006-01-05 19:05) [4]> и на Мой компутер
На «Мой компутер» точно не стоит.
← →
Almaz © (2006-01-06 00:40) [5]Я так понимаю, что проблема именно в том, чтобы найти все логические диски. Для этого проще всего воспользоваться функцией
GetLogicalDrives
, например так:var
DriveNum: Integer;
DriveChar: Char;
DriveBits: set of 0..25;
begin
Integer(DriveBits) := GetLogicalDrives;
for DriveNum := 0 to 25 do
if DriveNum in DriveBits then
begin
DriveChar := Char(DriveNum + Ord("a"));
if GetDriveType(PChar(DriveChar + ":\")) in [DRIVE_FIXED..DRIVE_REMOTE] then
FindAndSave(DriveChar + ":\");
end;
end;
ФункцияGetDriveType
служит для определения типа диска - в данном примере будут добавлены только локальные жесткие диски и подключенные сетевые. Чтобы искать еще и на дискетах, CD-ROM"ах и т.п. см. справку поGetDriveType
.
Удачи.
← →
Dot (2006-01-08 13:07) [6]Большое спасибо, разобрался
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.051 c