Функции для работы с файлами в Delphi

Файл не бумага — не всё стерпит!

Программист Козьма Прутков


Жизнь - сложная штука!

Остап Бендер

Однажды Пифагор на упрёк портного, что вот он великий учёный, а не мо­жет себе сшить банальных штанов, воскликнул: «Теоретически-то я могу, но практически - я без штанов!» Да, в реальных программах не всё так гладко, как описано в пунктах 1-5 нашего «рецепта», и при файловых опе­рациях могут возникать ошибки. Например, отсутствует указанный файл, произошла ошибка при его открытии, сбой при считывании или записи данных. Это вполне может быть и это бывает. Так вот, при работе с файла­ми программа автоматически отслеживает подобные ошибки и в случае возникновения оной так же автоматически «вырубается».

 

Такое «порочное» поведение программы обусловлено директивой компи­лятора   которая   включена  по     умолчанию. Если же   вы   хотите    едино­лично управлять программой при файловых операциях, то в критических местах должны отключить автоматическую проверку директивой ($1-) и самостоятельно анализировать результат выполнения операций ввода- вывода с помощью функции IOResult. Она возвращает 0, если операция за­вершилась успешно, или любое другое число в противном случае. Не за­будьте потом снова включить автоматическую проверку директивой

 

Функции для работы с файлами

При считывании данных из файла необходимо следить, не закончился ли файл (строка), иначе при попытке загрузить данные после конца файла возникнет ошибка. В слежке нам помогут функции:

 function Eof(var F: file): Boolean; (в нашем примере - eof(F);) function SeekEof(var F:  Text):     Boolean;  (в   нашем примере -SeekEof(F);) Eof - сокращение от «end of file». 

Если функция Eof (или SeekEof) возвращает TRUE, то достигнут конец файла и данные считываются дальше. Функция SeekEof отличается от Eof только тем, что пропускает стоящие в конце файла пробелы и знаки табу­ляции.

Пример использования функций:

 If eof(f) then ... //Если файл закончен, то ... Else read(f,s); //Если не закончен, то считать данные в перемен­ную s 

Впрочем, чаще используют условие, что файл ещё не закончен:

if not eof(f) then read(f,s);

Или

 while not eof(f) do begin Readln(F, S); end; CloseFile(F); 

Или

 Repeat Readln(F, S); Until SeekEof(f); CloseFile(F); 

Для определения конца строки имеются очень похожие функции:

 function Eoln(var F: Text): function SeekEoln(var F: Text): Boolean; 

Функция Eoln возвращает TRUE, если достигнут конец строки или конец файла (Eof = TRUE). Функция SeekEoln отличается от Eoln только тем, что пропускает стоящие в конце строки пробелы и знаки табуляции.

  Компоненты для работы с файлами в Delphi

Рассмотренный нами в пункте втором пример использования процедуры AssignFile(var F: file; FileName: string) имеет очевидный недостаток: в строке FileName должно быть заранее записано имя файла. А что делать, если пользователь захочет открыть или создать свой собственный файл, имени которого мы не знаем?

 

Конечно, можно разместить на форме компонент текстовое поле , в которое пользователь и введет с клави­атуры имя нужного ему файла, но зачем же так обременять человека?

 

В Delphi имеется и более гуманный способ: достаточно заменить текстовое или диалоговое и работа с файлами станет про­стой и удобной, поскольку пользователь сможет выбирать файлы при­вычным для него способом.

 

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: