Урок Delphi 7 |
Уроки 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. Но после того как где-то увидел вопрос: "как определить размер файла", мне тоже стало интересно.
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; Эта процедура выглядит компактнее, работает быстрее, но и требует дополнительной подготовки. Предыдущий урок
В начало урока
Следующий урок |
© 2023 Delphi-Manual.ru - Уроки Delphi начинающим с нуля |