Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Простейший сканер диска

Delphi , Файловая система , Диски

Простейший сканер диска

Первое правило сисадина: "Лежаший на столе винчестер с данными выглядит точно так же как и винчестер без данных".

Вот пример, который ищет мп3 файлы на жестком диске...


unit Audit1;

interface
uses windos;

var
  dest: string;

procedure dorecurse(dir: string);

implementation
{$R *.DFM}

procedure Process(dir: string; Searchrec: tsearchrec);
begin
  showmessage(Searchrec.name);
  case Searchrec.attr of
    $10:
      if (searchrec.name <> '.') and (searchrec.name <> '..') then
      begin
        dorecurse(dir + '\' + searchrec.name);
        writeln(dir);
      end;
  end;
end;

procedure Dorecurse(dir: string);
var
  Searchrec: Tsearchrec;
  pc: array[0..79] of Char;
begin
  StrPCopy(pc, dir + '\*.mp3');
  FindFirst(pc, FaAnyfile, SearchRec);
  Process(dir, SearchRec);
  while FindNext(SearchRec) <> -18 do
  begin
    Process(dir, SearchRec);
  end;
end;

procedure startsearch;
begin
  dorecurse(paramstr(1));
end;

begin
  startsearch;
end.

Программа для сканирования диска, написанная на Delphi (Pascal). Программа сканирует указанную на командной строке директорию для файлов MP3 и отображает их имена.

Распределение кода:

Декларация модуля Модуль Audit1 объявлен, содержащий реализацию программы.

Секция интерфейса Секция interface объявляет использование Windows модуля. Она также определяет два переменных: dest (строка) и процедуру dorecurse, которая принимает строковый параметр dir.

Секция реализации Секция реализации содержит три процедуры:

  1. Process: Процедура принимает два параметра: dir (строка) и Searchrec (запись Tsearchrec). Она отображает имя файла с помощью ShowMessage, а затем проверяет, является ли файл директории или нет. Если это не директория, она рекурсивно вызывает себя с пути файла в качестве аргумента.
  2. Dorecurse: Процедура принимает один параметр: dir (строка). Она конструирует поиск по каталогу, соединяя путь каталога с *.mp3, и затем использует функцию FindFirst для поиска файлов MP3 в этом каталоге. Процедура Process вызывается для каждого совпадающего файла, и процесс продолжается до тех пор, пока все файлы не будут обработаны.
  3. Startsearch: Процедура принимает никаких параметров и просто вызывает процедуру Dorecurse с первым аргументом командной строки (полученным с помощью Paramstr(1)).

Основная программа Основная программа начинается с вызова процедуры Startsearch, которая начинает рекурсивный поиск файлов MP3.

Заметки:

  • Код использует функции FindFirst и FindNext для поиска файлов, которые являются частью Windows API.
  • Функция ShowMessage используется для отображения имён найденных файлов.
  • Программа не обрабатывает ошибки или исключения, поэтому она может рухнуть в случае ошибки при выполнении.
  • Код использует рекурсивный подход для сканирования директории, что может быть неэффективно для больших директорий.

Альтернативное решение: Вместо использования рекурсии вы можете использовать цикл для итерации файлов в каждом каталоге и обработки их индивидуально. Это бы избежало риска ошибок стека, вызванных глубокой рекурсией. Вы также могли бы рассмотреть использование более эффективного алгоритма поиска, такого как функция FindFirstFile с флагом FIRSTFILE, которая позволяет искать файлы без необходимости итерации над всеми файлами в каталоге.

Также стоит отметить, что это код не очень robust и не обрабатывает многие краевые случаи. Например, он предполагает, что аргумент командной строки является валидным путем директории, и он не обрабатывает ошибки или исключения. В реальном приложении вам нужно добавить код обработки ошибок и валидации для сделать программу более надежной.

В статье описывается простейший сканер диска, написанный на языке программирования Pascal, который ищет файлы с расширением mp3 на жестком диске.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Диски ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 05:40:21/0.0036120414733887/0