Неверов Евгений Викторович
Меню сайта
Категории раздела
Программирование на языке Паскаль [27]
В данной категории представлены новые функции, созданные на языке Паскаль, которые могут пригодиться при написании своих программ
Программирование на Delphi [18]
В данной категории представлены полезные подпрограммы, которые могут пригодиться при написании своих программ, а также рассматриваются примеры готовых проектов, создаваемых в среде программирования Delphi
Программирование на HTML [0]
В данной категории рассматриваются примеры готовых проектов, создаваемых на языке HTML
Прочее [0]
Свободная тематика
Мини-чат
200
Наш опрос
Чем Вы занимаетесь?
Всего ответов: 36
Статистика

Рейтинг@Mail.ru
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Программирование на Delphi [ Добавить статью ]

Поиск файлов
procedure FileSystem(papka, fajl: string);
const FileAttr: array[0..37] of integer = (1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35,
         36, 37, 38, 39, 128, 288, 289, 290, 2048, 2080, 2081, 2082, 2083, 2084,
         2085, 2086, 8198, 8224, 8225, 8226, 8227, 8228, 8229, 8230, 10272,
         10273, 10274); // всевозможные атрибуты файлов
         { faReadOnly = $00000001 (1) }
         { faHidden = $00000002 (2) }
         { faSysFile = $00000004 (4) }
         { faVolumeID = $00000008 (8) }
         { faArchive = $00000020 (32) }
         { faAnyFile = $0000003F (63) }
      PapkaAttr: array[0..25] of integer = (16, 17, 18, 19, 20, 21, 22, 48, 49,
         50, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 8208, 8209, 8210,
         8211, 8212, 8213, 8214, 10256); // всевозможные атрибуты папок
         { faDirectory = $00000010 (16) }
var poisk: TSearchRec;
    ds: string;

   function PrinadlezhitI(n: integer; p: array of integer): boolean;
   var i: integer;
   begin
      Result:=false;
      For i:=Low(p) to High(p) do
         If n=p[i] then
            Result:=true;
   end;

begin
   ChDir(papka);
   If IOResult<>0 then
      Exit;
   If papka[Length(papka)]<>'\' then
      papka:=papka+'\';
   If FindFirst(fajl, faAnyFile, poisk)=0 then
   Repeat
      If PrinadlezhitI(poisk.Attr, FileAttr) then
      begin
         ds:=FormatDateTime('dd.mm.yyyy hh:nn:ss', FileDateToDateTime(poisk.Time));
         Form1.Memo1.Lines.Add(Format('%s%s: размер - %d, дата изменения - %s',
            [papka, poisk.Name, poisk.Size, ds]));
      end;
   Until FindNext(poisk)<>0;
   ChDir(papka);
   If FindFirst('*', faAnyFile, poisk)=0 then
   Repeat
      If PrinadlezhitI(poisk.Attr, PapkaAttr) then
         If not (poisk.Name='.') and not (poisk.Name='..') then
         begin
            FileSystem(papka+poisk.Name, fajl);
            ChDir(papka);
         end;
   Until FindNext(poisk)<>0;
   FindClose(poisk);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   Memo1.Clear;
   FileSystem('E:\Temp', '*'); // поиск всех файлов
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   Memo1.Clear;
   FileSystem('E:\Temp', '*.mp3'); // поиск файлов типа mp3
end;

где

papka - исходная папка;

fajl - файлы, которые нужно найти в исходной папке.

Например, при нажании на 1-ю кнопку текст в Memo1 будет выглядеть следующим образом:

E:\Temp\112.bmp: размер - 115926, дата изменения - 03.08.2016 09:54:12
E:\Temp\2016.jpg: размер - 58919, дата изменения - 21.09.2015 16:14:14
E:\Temp\Desktop.ini: размер - 78, дата изменения - 17.06.2011 16:55:34
E:\Temp\MAMBO.mp3: размер - 3584418, дата изменения - 08.08.2015 16:06:16
E:\Temp\PIN.png: размер - 22577, дата изменения - 11.01.2016 16:24:36
E:\Temp\Одноклассники.mp3: размер - 4047517, дата изменения - 14.08.2015 12:43:50
E:\Temp\Отпусти.mp3: размер - 3528829, дата изменения - 13.08.2015 12:26:16
E:\Temp\Шепот.txt: размер - 6444, дата изменения - 01.08.2016 18:36:48
E:\Temp\1\Сентябрь - Школьное солнце.mp3: размер - 3824744, дата изменения - 13.08.2015 18:52:34
E:\Temp\1\Я за тобой.mp3: размер - 3325701, дата изменения - 13.08.2015 16:19:24
E:\Temp\2\Project1.cfg: размер - 434, дата изменения - 20.03.2008 22:19:44
E:\Temp\2\Project1.dof: размер - 2015, дата изменения - 20.03.2008 22:19:44
E:\Temp\2\Project1.dpr: размер - 188, дата изменения - 20.03.2008 20:11:12
E:\Temp\2\Project1.exe: размер - 379904, дата изменения - 20.03.2008 22:19:16
E:\Temp\2\Project1.res: размер - 876, дата изменения - 20.03.2008 19:23:48
E:\Temp\2\Project1.~dpr: размер - 188, дата изменения - 20.03.2008 20:11:12
E:\Temp\2\Unit1.dcu: размер - 4601, дата изменения - 20.03.2008 22:17:46
E:\Temp\2\Unit1.ddp: размер - 51, дата изменения - 20.03.2008 22:19:42
E:\Temp\2\Unit1.dfm: размер - 746, дата изменения - 20.03.2008 22:19:16
E:\Temp\2\Unit1.pas: размер - 1459, дата изменения - 20.03.2008 22:17:42
E:\Temp\2\Unit1.~ddp: размер - 51, дата изменения - 20.03.2008 22:18:10
E:\Temp\2\Unit1.~dfm: размер - 718, дата изменения - 20.03.2008 19:33:48
E:\Temp\2\Unit1.~pas: размер - 1459, дата изменения - 20.03.2008 22:17:42

При нажании на 2-ю кнопку текст в Memo1 будет выглядеть следующим образом:

E:\Temp\MAMBO.mp3: размер - 3584418, дата изменения - 08.08.2015 16:06:16
E:\Temp\Одноклассники.mp3: размер - 4047517, дата изменения - 14.08.2015 12:43:50
E:\Temp\Отпусти.mp3: размер - 3528829, дата изменения - 13.08.2015 12:26:16
E:\Temp\1\Сентябрь - Школьное солнце.mp3: размер - 3824744, дата изменения - 13.08.2015 18:52:34
E:\Temp\1\Я за тобой.mp3: размер - 3325701, дата изменения - 13.08.2015 16:19:24

Примечание. Допускается использовать следующие константы: faReadOnly, faHidden, faSysFile, faVolumeID, faDirectory, faArchive, faAnyFile. Например:

If poisk.Attr = faSysFile then // найти системные файлы
If poisk.Attr = faAnyFile then // найти все файлы
Категория: Программирование на Delphi | Добавил: newerow1989 (14.08.2016 14:34 )
Просмотров: 164 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Все смайлы
Код *:
Поиск
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2018
    Автор этого сайта: Неверов Евгений Викторович

    Мои координаты
    Бесплатный конструктор сайтов - uCozЯндекс.Метрика