Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработчик цикла for..in по файловой системе, готовое решение для Delphi 2006 и выше 
:(
    Опции темы
s-mike
Дата 28.10.2007, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 9
Всего: 16



Назначение данного модуля — заменить функции FindFirst..FindNext более удобным циклом for..in. Кроме того реализован рекурсивный поиск в поддиректориях.

Подсоединив модуль к проекту, можно осуществлять поиск файлов таким образом:
Код
var
  F: TFileInfo;
begin
  // для поиска файлов только в заданной директории
  for F in SearchFiles('C:\Windows', '*.*') do
    Memo.Lines.Add(F.FileName);

  // для поиска файлов в поддиректориях
  for F in SearchFilesRecursive('C:\Windows', '*', faAllTypes - faDirectory) do
    Memo.Lines.Add(F.FileName);


Класс TFileInfo заменяет заполнение структуры TSearchRec, как это делают FindFirst/FindNext, что должно дать прирост в производительности. Нужные свойства извлекаются из _WIN32_FIND_DATA напрямую при непосредственном запросе к нужному свойству. Свойства предоставляются аналогичные имеющимся в TSearchRec:
Код
    // Атрибуты файла
    property Attributes: Cardinal;
    // Полное имя файла (с путем)
    property FileName: string read GetFileName;
    // Только имя файла (без пути)
    property Name: string read GetName;
    // Короткое имя файла в формате 8.3 (ДОС)
    property NameDOS: string read GetNameDOS;
    // Размер файла
    property Size: Int64 read GetSize;
    // Время создания файла
    property Time: Integer read GetTime;

    // Предоставляет прямой доступ к структуре _WIN32_FIND_DATA,
    // чтобы получить доступ к дополнительным данным, написания хелперов, и т.п.
    property FindData: TWin32FindData read FFindData;


Также модуль содержит константы для всех типов файлов, существующих в современных версиях Windows.

Это сообщение отредактировал(а) s-mike - 28.10.2007, 01:07

Присоединённый файл ( Кол-во скачиваний: 76 )
Присоединённый файл  FileEnum.zip 3,17 Kb
PM MAIL WWW   Вверх
EvilsInterrupt
Дата 28.10.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 3
Всего: 9



Желателен, прямо здесь простенький пример с тегом code поясняющий вашу задумку;)
PM MAIL WWW ICQ Jabber   Вверх
s-mike
Дата 28.10.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 9
Всего: 16



Пример находится после слов "Подсоединив модуль к проекту, можно осуществлять поиск файлов таким образом:" ;) Да и в самом модуле есть пример.

То есть простой цикл for..in (появившийся в Delphi 2006) по заданным в одной из функций (SearchFiles или SearchFilesRecursive) условиям. Цикл возвращает указатель на класс TFileInfo, из которого можно получить любые данные о файле.

В принципе пользоваться этим модулем можно и в более ранних версиях Delphi, но не так удобно, поскольку придется вызывать дополнительные методы.
PM MAIL WWW   Вверх
Alexeis
Дата 28.10.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Грамотный подход. Пожалуй я бы включил такой модуль как один из базовых в VCL!


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0674 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.