- •Windows -приложение
- •Среда программирования
- •Встроенный отладчик
- •Использование графики
- •Графические данные и палитра
- •Сохранение проекта
- •Структура приложения
- •Структура модуля
- •Простые типы
- •Символьные типы
- •Логические типы
- •Тип перечень
- •Составной оператор
- •Оператор if
- •Оператор цикла for
- •Оператор цикла while
- •Оператор цикла repeat
- •Пример приложения 6
- •Пример приложения 7
- •Статические массивы
- •Динамические массивы
- •Оператор with
- •Идентичность типов
- •Совместимость типов
- •Преобразование типов
- •Операторы обработки исключительных ситуаций
- •Рекурсия
- •Процедура exit
- •Директивы подпрограммы
- •Класс как объектный тип
- •Наследование
- •Операции is и as
- •Типы ссылки на класс
- •Типизированные файлы
- •Файлы без типа
- •Пример приложения 17
- •Компонент tmainmenii
- •Двунаправленные списки
- •Потоки данных
- •Пример приложения 22
- •Интерфейс drag and drop
- •Пример приложения 24
- •С файлами
- •Пример приложения 26
- •Программные потоки
- •Приоритеты потоков
- •Класс tthread
- •Проблемы синхронизации потоков
Типизированные файлы
Файловая переменная для этого типа объявляется следующим образом: Var F : file of <тип элементов>,-. Тип элементов может быть любым, за исключением файлового типа и указательного. Например, Var f : file of Double;.
Как и в случае текстовых файлов, для работы с типизированными файлами необходимо файловую переменную связать с конкретным файлом, затем указать режим работы с этим файлом и по окончании закрыть его, например,
AssignFile(F, 'c:\a.dat');
Reset(F); {или Rewrite(F)}
………….
CloseFile(F);.
Процедура Rewrite, как и в случае текстовых файлов, открывает новый типизированный файл для записи информации. Однако процедура Reset работает не так, как с текстовыми файлами, - она устанавливает доступ и на чтение, и на запись информации. Чтение и запись осуществляются следующими процедурами:
Read((<ф.п.><список>); Write(<ф.п.>, <список>);.
Так как данный файл является файлом прямого доступа, можно устанавливать файловый указатель на любую запись файла. Для этой цели используется процедура Seek{<ф.п.>,<номер записи>); {отсчет от 0}.
Найденную запись можно прочитать или снова перезаписать. В отличие от текстовых файлов, при записи информации в типизированный файл нельзя использовать выражения в процедуре Write.
Файлы без типа
В данном случае файловая переменная указывается так: Var F: file;.
Связывание файловой переменной с конкретным файлом и закрытие файла осуществляют так же, как и для типизированных файлов. Однако задание режима работы с файлом отличается от аналогичной операции, применяемой к типизированному файлу:
Reset(<ф.п.>, Size);
Rewrite(<ф.п.>, Size);.
Добавляется дополнительный параметр size - размер элементов в файле. Величину Size можно устанавливать равной 1. Можно не указывать Size, тогда система по умолчанию примет величину 128. Чтение и запись производятся процедурами:
BlockRead(<ф.п.>, Buffer,N, Result);
BlockWrite(<ф.п.>, Buffer, N, Result);.
Здесь Buffer обычно задается описанием Array ... of Char или Array ... of Byte, N - число элементов, которое требуется прочитать или записать; Result - конкретное число элементов, которое было прочитано или записано.
Если пользователь знает, какая информация записана в файле, то можно задавать конкретный размер записи. Например, если необходимо работать со структурами данных, то, используя функцию SizeOf, можно определить размер записи, кратный полученному с помощью SizeOf числу. Использование процедур BlockRead и BlockWrite в этом случае значительно ускорят работу с файлами.
ДОПОЛНИТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
Существует достаточно большое число процедур для работы с файлами, например текстовый файл можно дописывать с помощью задания специального режима: Append(<ф.п. >);. Эта процедура устанавливает указатель в конец файла. Очень полезной является функция Eof (<ф.п.>) (End of file). Она возвращает true, если достигнут конец файла. С помощью этой функции Можно контролировать навигацию по файлу: not Eof(F) do begin
140
141
Read(F, a); ....
end;.
Процедура Read (как и процедура write) сдвигает файловый указатель на единицу. Таким образом, с помощью приведенного выше цикла можно прочитать файл до конца.