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

Мен никога не е имал за задача да се определи размерът на файла Delphi. Но след като видях някъде на въпроса: "как да се определи размера на файла," аз също бях любопитен.

Определяне на размера на файла е същото като определението за растеж боа в известния анимационен филм! Колко байта тя ще се побере, затова е размерът му. Планът е както следва:
  1. Питам тип 1 байт данни. Това ще бъде рекорд.
  2. Определя се променливата на файл от този тип.
  3. Започваме с началото на файла и отидете до края. Как най-много реализации - толкова много байтове във файла!
Програмата се състои от форми. който взема компонент за избор на файлове - OpenDialog и бутон Бутон. като кликнете върху който и да изберете файла. Тук, в действителност, един манипулатор на бутона:

процедура TForm1.ButtonClick (Sender: TObject);
въведете TSize = Запис
Стръв: байт;
приключи;
Var F: Файл на TSize;
Размер: цяло число;
започвам
Размер: = 0;
с OpenDialog1 правя
ако Execute след това
започвам
AssignFile (F, FileName);
Reset (F);
докато (не EOF (F)) правя
започвам
Размер: Размер = + 1;
търси (F, размер);
приключи;
Form1.Caption: = IntToStr (размер); // дисплей информация за размера на заглавната част на формата
CloseFile (F);
приключи;
приключи;

Програмата е написана за пет минути, казват те, "на коляното". Тя работи в продължение на няколко мегабайта, докато чака резултат от малки файлове, за няколко секунди. За по-големи файлове, чакащи забави, и "затвори" програма прилича. Можете да промените програмата, така че да се счита килобайта (замени потърси (F, размер), за да се потърси (F, Размер * 1024)). Тя ще увеличи скоростта на 1024 пъти и няма да има приемливо.

Това е още една демонстрация на методите на работа с файлове. И в действителност, това е много по-лесно! Размер на файла FileSize връща вградената функция. Файлът е достатъчно да се опише като тип байт:

процедура TForm1.ButtonClick (Sender: TObject);
Var F: Файл на байт;
Размер: цяло число;
започвам
с OpenDialog1 правя
ако Execute след това
започвам
AssignFile (F, FileName);
Reset (F);
Размер: = Размер (F);
Form1.Caption: = IntToStr (размер); // дисплей информация за размера на заглавната част на формата
CloseFile (F);
приключи;
приключи;

Налице е алтернативен начин за работа с Delphi файлове. в което файлът се третира като обект. Освен това има и вградени методи за определяне на размера на файла. Също така донесе на целия процес:

процедура TForm1.ButtonClick (Sender: TObject);
Var F: TFileStream;
започвам
с OpenDialog1 правя
ако Execute след това
започвам
F: = TFileStream.Create (необходимо, fmOpenRead);
Заглавие: = IntToStr (F.Size);
F.Free;
приключи;
приключи;

Тази процедура е по-компактен, по-бързо, но се нуждае от допълнително обучение.