Урок Delphi 7
Работа с файлами в Delphi

Определение размера файла


Компоненты работающие с файлами
Классическая работа с файлами
Диалоги выбора файлов
Определение размера файла
Поиск файлов
Таблица функций






Уроки Delphi
  1.  Первая программа
  2.  Использование компонентов
  3.  События Delphi
  4.  Типы данных Delphi
  5.  Создание своих типов данных
  6.  Выражения и операторы
  7.  Работа с файлами в Delphi
  8.  Дополнительные формы
  9.  Подпрограммы в Delphi
  10. Исключительные ситуации
  11. Взаимодействие приложения с пользователем
  12. Указатели в Delphi
  13. Обзор компонентов
  14. Работа со строками
  15. Создание интерфейса
  16. Графика в Delphi
  17. Многопоточность в Delphi
  18. Динамическое создание
        компонентов
Поиск по сайту




 Это важно:
   Метод Application.ProcessMessages;

 Это полезно:
   Параметр Sender в обработчиках событий;










Бояться не надо



   Передо мной никогда не стояла задача определения размера файла Delphi. Но после того как где-то увидел вопрос: "как определить размер файла", мне тоже стало интересно.

   Определение размера файла это то же самое, что определение роста удава в известном мультике! Сколько байтов в него поместится, таков и его размер. План такой:

  1. Задаём тип данных размером 1 байт. Это будет запись.
  2. Определяем файловую переменную этого типа.
  3. Начинаем с начала файла и переходим к концу. Сколько переходов - столько и байтов в файле!
   Программа будет состоять из Формы, на которую бросим компонент выбора файла - OpenDialog и кнопку Button, по нажатию на которую и будем выбирать файл. Вот, собственно, и обработчик этой кнопки:

procedure TForm1.ButtonClick(Sender: TObject);
type TSize = Record
  Bait: byte;
end;
var F: File of TSize;
  Size: Integer;
begin
Size:=0;
with OpenDialog1 do
 if Execute then
   begin
      AssignFile(F, FileName);
      Reset(F);
      while (not EOF(F)) do
        begin
          Size:=Size+1;
          seek(F, Size);
        end;
Form1.Caption:=IntToStr(Size); // Выводим информацию о размере в заголовок Формы
CloseFile(F);
   end;
end;

   Программа была написана за пять минут, что называется, "на коленке". Она работает, и для файлов размером до нескольких мегабайт время ожидания результата невелико, несколько секунд. Для больших файлов ожидание затягивается, и программа выглядит "зависшей". Можно изменить программу так, чтобы она считала килобайты (заменить seek(F, Size) на seek(F, Size*1024)). Скорость работы возрастёт в 1024 раза, и уже будет приемлемой.

   Это была ещё одна демонстрация приёмов работы с файлами. А на самом деле всё гораздо проще! Размер файла возвращается встроенной функцией FileSize. А файл достаточно описать как имеющий тип byte:

procedure TForm1.ButtonClick(Sender: TObject);
var F: File of byte;
  Size: Integer;
begin
with OpenDialog1 do
 if Execute then
   begin
      AssignFile(F, FileName);
      Reset(F);
      Size:=Filesize(F);
      Form1.Caption:=IntToStr(Size); // Выводим информацию о размере в заголовок Формы
      CloseFile(F);
   end;
end;

   Есть альтернативный способ работы с файлами Delphi, в котором файл рассматривается как объект. Там также есть встроенные способы определения размера файла. Также приведу процедуру целиком:

procedure TForm1.ButtonClick(Sender: TObject);
var F: TFileStream;
begin
with OpenDialog1 do
  if Execute then
    begin
      F:=TFileStream.Create(Filename, fmOpenRead);
      Caption:=IntToStr(F.Size);
      F.Free;
    end;
end;

   Эта процедура выглядит компактнее, работает быстрее, но и требует дополнительной подготовки.


Предыдущий урок           В начало урока          Следующий урок

Уроки Delphi начинающим







© 2023 Delphi-Manual.ru - Уроки Delphi начинающим с нуля