Вниз
Скачать: CL | DM;

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

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
2-1136328649
Lokk
2006-01-04 01:50
2006.01.22
прогрессбар!


2-1135805005
з. танька
2005-12-29 00:23
2006.01.22
выдрать строку адреса из окна IE


2-1135652426
stef
2005-12-27 06:00
2006.01.22
Не правильно работает цикл for


14-1135152597
vidiv
2005-12-21 11:09
2006.01.22
Автомагнитолла для академиков


1-1134762156
Pavel__
2005-12-16 22:42
2006.01.22
Как узнать что в системе установлен хотя бы один принтер?




   Наверх