Новые книги

Продолжение книги "Внутреннее устройство Microsoft Windows" — 5 и 7 главы.
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.

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

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

Модуль System

Procedure AssignFile(var F; FileName: String);

Для избежания конфликтов, AssignFile заменяет стандартную процедуру Assign в Delphi. Однако для обратной совместимости вы можете использовать Assign. Процедура AssignFile сопоставляет имя внешнего файла с файловой переменной.

F - файловая переменная любого файлового типа, FileName - выражение типа String или выражение типа PChar, если допускается расширенный синтаксис. Все дальнейшие операции с F производятся с внешним файлом.

Не используйте AssignFile с уже открытой файловой переменной.

 

Procedure CloseFile(var F);

Из-за конфликтов наименования, процедура CloseFile заменяет стандартную процедуру Close из Borland Pascal. Используйте CloseFile чтобы разорвать связь между файловой переменной и внешним дисковым файлом и закрыть файл.

F - файловая переменная любого файлового типа, открытая процедурами Reset, Rewrite или Append. Внешний файл, связанный с F, полностью модифицируется и затем закрывается, освобождая дескриптор файла для повторного использования.

Директива {$I+} позволяет вам обрабатывать ошибки во время выполнения программы, используя обработку исключительных ситуаций.

При выключенной директиве {$I-}, вы должны использовать IOResult для проверки ошибок ввода - вывода.

 

Function Eof(var F): Boolean;

(типизированные или нетипизированные файлы)

 

Function Eof[(var F: Text)]: Boolean;

(текстовые файлы)

Проверяет, является или нет текущая позиция файла концом файла.

Eof(F) возвращает True, если текущая позиция файла находится за последним символом файла или если файл пуст; иначе, Eof (F) возвращает False.

Директива {$I+} позволяет вам обрабатывать ошибки во время выполнения программы, используя обработку исключительных ситуаций.

При выключенной директиве {$I-}, вы должны использовать IOResult для проверки ошибок ввода - вывода.

 

Procedure Erase(var F);

Удаляет внешний файл, связанный с F.

F - файловая переменная любого файлового типа.

Перед вызовом процедуры Erase, файл необходимо закрыть.

Директива {$I+} позволяет вам обрабатывать ошибки во время выполнения программы, используя обработку исключительных ситуаций.

При выключенной директиве {$I-}, вы должны использовать IOResult для проверки ошибок ввода - вывода.

 

Function FileSize(var F): Integer;

Возвращает размер в байтах файла F. Однако, если F - типизированный файл, FileSize возвратит число записей в файле.

Перед использованием функции FileSize, файл должен быть открыт.

Если файл пуст, FileSize(F) возвращает 0.

F - переменная любого файлового типа.

 

Function FilePos(var F): LongInt;

Возвращает текущую позицию файла внутри файла.

Перед использованием функции FilePos, файл должен быть открыт. Функция FilePos не используется с текстовыми файлами.

F - переменная любого файлового типа, кроме типа Text.

 

Procedure Reset(var F [: File; RecSize: Word]);

Открывает существующий файл.

F - переменная любого файлового типа, связанного с внешним файлом с помощью AssignFile. RecSize - необязательное выражение, которое используется, если F - нетипизированный файл. Если F - нетипизированный файл, RecSize определяет размер записи, который используется при передаче данных. Если RecSize опущен, заданный по умолчанию размер записи равен 128 байт.

Процедура Reset открывает существующий внешний файл, ассоциированный с файловой переменной F. Если внешнего файла с таким именем нет, возникает ошибка времени выполнения. Если файл, связанный с F уже открыт, он сначала закрывается и затем вновь открывается. Текущая позиция файла устанавливается к началу файла.

 

Procedure Rewrite(var F: File [; Recsize: Word]);

Создает и открывает новый файл.

F - переменная любого файлового типа, связанного с внешним файлом с использованием AssignFile.RecSize - необязательное выражение, которое используется, если F - нетипизированный файл. Если F - нетипизированный файл, RecSize определяет размер записи, который используется при передаче данных. Если RecSize опущен, заданный по умолчанию размер записи равен 128 байт.

Процедура Rewrite создает новый внешний файл с именем, связанным с F.

Если внешний файл с тем же самым именем уже существует, он удаляется, и создается новый пустой файл.

 

Procedure Seek(var F; N: LongInt);

Перемещает текущую позицию файла к определенному компоненту. Вы можете использовать процедуру только с открытыми типизированными или нетипизированными файлами.

Текущая позиция файла F перемещается к номеру N. Номер первого компонента файла - 0.

Инструкция Seek(F, FileSize(F)) перемещает текущую позицию файла в конец файла.

 

Procedure Append(var F: Text);

Открывает существующий текстовый файл для добавления информации в конец файла (дозаписи).

Если внешнего файла с данным именем не существует, происходит ошибка времени выполнения.

Если файл F уже открыт, он закрывается и вновь открывается. Текущая позиция файла устанавливается к концу файла.

 

Function Eoln[(var F: Text)]: Boolean;

Проверяет, является ли текущая позиция файла концом строки текстового файла.

Eoln(F) возвращает True, если текущая позиция файла - в конце строки или файла; иначе Eoln(F) возвращает False.

 

Procedure Read(F, V1 [, V2, ..., Vn]);

(типизированные и нетипизированные файлы)

 

Procedure Read([var F: Text;] V1 [, V2, ..., Vn]);

(текстовые файлы)

Для типизированных файлов процедура читает компонент файла в переменную. При каждом считывании текущая позиция в файле продвигается к следующему элементу.

Для текстовых файлов читается одно или несколько значений в одну или несколько переменных.

С переменными типа String Read считывает все символы вплоть до следующей метки конца строки (но не включая ее), или пока функция Eof(F) не примет значение True. Переменной присваивается получившаяся в результате символьная строка.

В случае переменной целого или вещественного типа процедура ожидает поступления последовательности символов, образующих число по правилам синтаксиса языка Object Pascal. Считывание прекращается при обнаружении первого пробела, символа табуляции или метки конца строки, или в том случае, если функция Eof(F) принимает значение True. Если числовая строка не соответствует ожидаемому формату, то происходит ошибка ввода-вывода.

 

 

Procedure Readln([var F: Text;] V1 [, V2, ..., Vn]);

Является расширением процедуры Read и определена для текстовых файлов. Считывает строку символов в файле (включая маркер конца строки) и переходит к началу следующей строки. Вызов функции Readln(F) без параметров приводит к перемещению текущей позиции файла на начало следующей строки, если она имеется, в противном случае происходит переход к концу файла.

 

Function SeekEof[(var F: Text)]: Boolean;

Возвращает признак конца файла и может использоваться только для открытых текстовых файлов. Обычно применяется для считывания числовых значений из текстовых файлов.

 

Function SeekEoln[(var F: Text)]: Boolean;

Возвращает признак конца строки в файле и может использоваться только для открытых текстовых файлов. Обычно применяется для считывания числовых значений из текстовых файлов.

 

Procedure Write([var F: Text;] P1 [, P2, ..., Pn]);

(текстовые файлы)

Записывает одну или более величин в текстовый файл.

Каждый параметр записи должен иметь тип Char, один из целочисленных типов (Byte, ShortInt, Word, LongInt, Cardinal), один из типов с плавающей запятой (Single, Real, Double, Extended, Currency), один из строковых типов (PChar, AnsiString, ShortString), или одного из логических типов (Boolean, Bool).

 

Procedure Write(F, V1, ..., Vn);

(типизированные файлы)

Записывает переменную в компонент файла. Переменные V1,...,Vn должны быть того же типа, что и элементы файла. При каждой записи переменной текущая позиция в файле передвигается к следующему элементу.

 

Procedure Writeln([var F: Text;] P1 [, P2, ..., Pn]);

(текстовые файлы)

Выполняет операцию Write, затем помещает метку конца строки в файл.

Вызов Writeln(F) без параметров записывает в файл маркер конца строки.

Файл должен быть открыт для вывода.