Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.045 c
14-1135437829
Omar2002
2005-12-24 18:23
2006.01.22
К новому году


2-1136536500
TBeginner
2006-01-06 11:35
2006.01.22
Замена текста в файлах каталога


8-1123418199
Nick Denry
2005-08-07 16:36
2006.01.22
Изменяющийся регион или скины как у Windows Media Player a


14-1136026952
Kerk
2005-12-31 14:02
2006.01.22
Стратегия и тактика


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский