Поиск информации в Интернете/Поиск файлов: различия между версиями

Содержимое удалено Содержимое добавлено
Создана новая страница размером TFileFinder-механизм поиска файлов Автор:TADEX Надпись на дисплее нового карманн…
 
Нет описания правки
Строка 1:
Огромное количество информации в Интернете хранится не в виде привычных html-страниц, а в виде файлов иных форматов. Это изображения, музыка, видео, программы и различная другая информация.
TFileFinder-механизм поиска файлов
 
При поиске файла, если точное его название известно, то можно ввести его в поле запроса поисковой системы. Если точное имя неизвестно, то можно ввести предположительное расширение файла, ту часть его имени, которая известна, а также краткое описание этого файла.
Автор:TADEX
 
Например, надо найти файл qwer.dll из дистрибутива офисного пакета с условным названием SuperOffice. Этот файл необходим, так как на компакт-диске с установочными файлами пакета он оказался поврежден и система отказывается продолжать установку без него. Откройте браузер, войдите на сайт одной из поисковых систем, введите запрос qwer.dll. Если в результате поиска не обнаружится ни одной ссылки на требуемый файл и ни одной ссылки на страницу, которая содержала бы ссылку на требуемый файл, то введите поисковый запрос qwer.dll SuperOffice.
Надпись на дисплее нового карманного компаса под управлением Windows CE - "Севеp не найден."
История
 
== Google ==
Нужно было создать компонент, который производит поиск файлов. Он уже был создан и в периодически дополнялся новыми возможностями. Получился компонент с огромными и очень широкими возможностями.Но к сожалению - он был опробован только на Delphi 5 + WinNT 4.0 SP6. Но,можно и без проблем работать и в других средах....
Сервис расширенного поиска в [w:Google] позволяет показывать в окне поиска только файлы выбранного формата, либо наоборот исключать файлы этого формата из списка найденных документов:
* Adobe Acrobat PDF (pdt);
* Adobe Postscript (.ps);
* Autodesk DWF (.dvf);
* Google Планета Земля KML (.kml);
* Google Планета Земля KMZ (.kmz);
* Microsoft Excel (.xls);
* Microsoft Powerpoint (.ppt);
* Microsoft Word (.doc);
* Rich Text Format (.rtf);
* Shockwave Flash (.swf).
 
== Поисковые серверы FTP ==
Краткие характеристики
Если требуемый файл не удалось найти с помощью обычных поисковых систем, то воспользуйтесь специальным поиском по FTP-серверам.
 
Поисковые серверы FTP, например, Rambler-FTP, осуществляют поиск по FTP-серверам аналогично обыкновенному поиску. Зайдя на сайт одной из поисковых систем FTP, введите в строке для запроса ключевое слово (например, 'zemfira' или 'netscape'), шаблон (например, 'far*.exe' или '*.mpg'), имя искомого файла вместе с расширением либо часть имени и нажмите кнопку Найти (Search) рядом с полем для ввода. Через некоторое время на экране появится список найденных в Интернете файлов и папок, которые содержат в своем имени или в пути к себе текст, введенный вами в поисковом запросе. Перемещение по страницам результатов поиска происходит так же, как это делалось в обычных поисковых системах. При FTP-поиске не следует вводить описание файла, иначе ни один файл найден не будет и страница с результатами поиска окажется пустой.
Компонент позволит производить поиск как на локальных дисках так и в локальной сети.
 
== Ссылки ==
Компонент использует многопотоковость.
* [http://ftpsearch.rambler.ru/db/ftpsearch/ Rambler-FTP]
 
* Для сканирования локальных дисков используется отдельный поток, что позволяет продолжать выполнение программы.
* Для сканирования удаленных компьютеров используется по одному потоку на каждый компьютер. То сеть одновременно позволяет сканировать хоть все компьютер сети.
 
Это новшество должно заметно если не сказать "КОНКРЕТНО" повышает скорость сканирования и Фильтрования файлов. Гарантируется, что один и тот же файл не будет дважды и более возвращен. Это может случиться при поиске файлов по нескольким маскам (Например поиск ведется по маскам [some*.*] и [*.txt] в этом случае файл somebody.txt попадает в две категории)
 
Компонент ведет статистику:
 
* Кол-во найденых файлов.
* Кол-во просканированых директорий.
* Время проведенное в сканировании файлов (паузы исключаются).
* Время начала и конца сканирования.
 
Описание
 
Имя: TCustomFileFinder.
 
procedure DoFindFile(var FileInfo: TFileInfo); virtual; protected;
 
 
Вызывает OnFindFile. Может быть отменена в производных классах.
 
procedure DoScanDir(const Dir: string); virtual; protected;
 
 
Вызывает OnScanDirectory. Может быть отменена в производных классах.
 
property Dirs: TStrings; protected;
 
 
Содержит список директорий в которых будет производиться посик.
 
Понимает следующие выражения:
 
[Drive:][\][Dir[\]] - Поиск в каталоге на локальном диске
\\ - Поиск во всех ресурсах каждого компьютера в сети
\\[Computer][\] - Поиск во всех ресурсах определенного компьютера в сети
\\[Computer][\Share][\] - Поиск в данном ресурсе определенного компьютера в сети
 
 
Комментарий:
 
Список используется только при ScanDirs равном sdOther.
 
Замечание:
 
Если указываются подкаталоги то при в включеной рекурсии они игнорируются.
 
Пример:
 
Указан поиск в c:\temp
 
 
\\
\\server <== (*)
d:\win95
d:\win95\temp <== (*)
 
 
Каталоги (*) будут игнориорваться т.к. [\\server] входит в множество [\\], а [d:\win95\temp] входит в [d:\win95]
 
property ScanDirs: TScanDirs; protected;
 
 
Указывает, где будет производиться поиск.
 
* sdOther - каталоги указаны в переменной Dirs
* sdCurrentDir - В текущей директории
* sdCurrentDrive - На текущем диске (диск откуда запускалась программа,
 
но не где находится исполняемый файл)
 
* sdFixedDrives - Только на жестких дисках (исключаются дискеты, CDROM, сетевые диски и т.п.)
* sdAllDrives - На всех дисках которые присутсвуют в системе
* sdAllNetwork - По всем ресурсам сети (исключаются локальные ресурсы)
 
 
property Wildcards: TStrings; protected;
 
 
Содержит список масок по которым будет производиться поиск файлов.
 
Например: Поиск всех файлов с расширением WAV и MP3:
 
*.wav
*.mp3
 
 
 
property Recurse: Boolean; protected;
 
 
Если True, то поиск также будет производиться в поддиректориях.
 
property Attributes: TFileAttributes; protected;
 
 
Указываются атрибуты искомых файлов.
 
Например:
 
[faArchive, faReadOnly] - будут найдены файлы у которых нет установленных атрибутов и файлы у которых установлены атрибуты faArchive или faReadOnly или оба вместе.
 
property MaxThreads: Cardinal; protected;
 
 
Указывает максимальное количество одновременно работающих потоков. 0 - нет ограничений.
 
Комментарий:
 
Используется при поиске в локальной сети. Оптимальное значение не найдено. Но при значительно малом значении снижается скорость поиска, а при большом наблюдается наиболее большая загрузка ресурсов компьютера. Для поиска на локальных дисках используется один поток, т. к. использование нескольких потоков значительно заметного прироста производительности не дадут.
 
 
property OnFindFile(Sender: TObject; var FileInfo: TFileInfo); protected; event;
 
 
Вызывается если файл отвечающий условиям поиска найден.
 
Информация о файле содержится в структуре FileInfo;
 
Время на затрату обработки этого события постарайтесь сделать как можно меньше, т. к. поиск файлов вызывающий поток возобновит только после возврата из события.
 
property OnScanDirectory(Sender: TObject; const Dir: string); protected; event;
 
 
Вызывается перед поиском файлов в директории Dir.
 
Не вижу сколь нибудь пользы от этого обработчика, кроме информационной. Можно пользователю показать, где в данные момент производиться поиск.
 
property OnEndScan(Sender: TObject; Terminated: Boolean); protected; event;
 
 
Вызывается после того как все потоки завершили свою работу.
 
procedure Start(Wait: Boolean = False); public;
 
 
Собственно дает команду начать поиск.
 
Если Wait = True, то процедура вернет управление только когда полностью закончиться поиск. Иначе функция сразу вернет управление. Если уже идет поиск, то выбрасывается исключение.
 
procedure Terminate; public;
 
 
Прерывает поиск. Если поиск не происходит, то выбрасывается исключение.
 
function Scaning: Boolean; public;
 
 
Если возвращает True, то компонент осуществляет поиск.
 
property Pause: Boolean; public;
 
 
Присваивание этому свойству True, приостанавливает поиск.
 
Присваивание этому свойству False, возобновляет поиск.