
- •Внешние файлы
- •7.1Цель работы
- •7.2Задание
- •7.3Теоретические сведения
- •Структура физического файла
- •Структура логических файлов
- •Доступ к файлу, операции с файлами
- •Установка связи
- •Инициация файла
- •Процедуры чтения-записи
- •Закрытие доступа к файлу
- •Вспомогательные функции
- •Компоненты категории Dialogs
- •Основные свойства и методы tOpenDialog и tSaveDialog
- •Обработка типизованных файлов
- •Пример 1. Запись массива в типизованный файл
- •Пример 2. Запись в файл с использованием диалога
- •Пример 3. Чтение из типизованного файла
- •Пример 4. Чтение из типизованного файла с контролем ошибок
- •Обработка текстовых файлов Пример 5. Запись в тестовый файл
- •Пример 6. Добавление записей в конец тестового файла
- •Пример 7. Обработка текстового файла
- •Нетипизованные файлы
- •7.4Содержание отчета
- •7.5Контрольные вопросы
Обработка текстовых файлов Пример 5. Запись в тестовый файл
Дано: поле Memo с введённым многострочным текстом.
Требуется записать в файл текст из поля Memo.
В разделе implementation описаны:
Var F : TextFile; //текстовый файл
………………………
{текст процедуры обработки события, например “Нажатие кнопки”}
begin
if SaveDialog1.Execute //выполняется диалог ‘Сохранить как’
then begin //введено имя файла
AssignFile(F, SaveDialog1.FileName;);
Rewrite(F); //файл открыт для записи
Write(F, Memo1.Text); //записывается тест из Memo1
end;
CloseFile(F);
……….
Пример 6. Добавление записей в конец тестового файла
Дано: поле Memo с введённым многострочным текстом.
Требуется записать в файл текст из поля Memo.
В разделе implementation описаны:
Var F : TextFile; //текстовый файл
………………………
{текст процедуры обработки события, например “Нажатие кнопки”}
var S :String; //строка текстового файла
begin
if OpenDialog1.Execute //выполняется диалог ‘Открыть’
then AssignFile(F, OpenDialog1. FileName);
{$I-} //отключён контроль ввода-вывода
Append(F); // открыт на запись в конец файла
{$I+} //включён контроль ввода-вывода
if IOresult = 0
Then Write(F, Memo1.Text) //ошибок нет – запись в файл
Else Exit;
………………………..
Пример 7. Обработка текстового файла
Дано: текстовый файл.
Требуется подсчитать количество символов Sym_S и количество строк Str_S в текстовом файле.
Постановка задачи.
Начальные значения кол-во символов Sym_S и количество строк Str_S положим равными 0;
определим вспомогательную строковую переменную S
в цикле, пока не будет достигнут конец файла считываем строку S;
увеличиваем Str_S на 1 Inc(Str_S);
определяться длина строки Length(S) и прибавляем к Sym_S.
В разделе implementation описаны:
Var F : TextFile; //текстовый файл
………………………
{текст процедуры обработки события, например “Нажатие кнопки”}
var S: String; //вспомогательная переменная
Sym_S, Str_S: Integer; //кол-во символов и кол-во строк
begin
if OpenDialog1.Execute
AssignFile(F, OpenDialog1.FileName);
{$I-} //отключён контроль ввода-вывода
Reset(F); //открыт для чтения
{$I+} //включён контроль ввода-вывода
if IOresult = 0 //ошибок нет
Then
ShowMessage(OpenDialog1.FileName );
else exit;
Sym_S:= 0; //начальное кол-во символов
Str_S :=0; //начальное кол-во строк
While Not Eof(F) do //пока не конец файла
Begin
ReadLn(F, S); //считать строку
Inc(Str_S); //увеличить Str_S на 1
Inc(Sym_S, Length(S)); //увеличить S на длину строки
End;
CloseFile(F);
{Распечатка результатов}
Label1.Caption :=' Символов '+ IntToStr(Sym_S)+ ' Строк '+ IntToStr(Str_S);
End.
Нетипизованные файлы
Нетипизованные файлы объявляются как файловые переменные типа File и отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти файлы, с одной стороны, совместимыми с любыми другими файлами, а с другой - позволяет организовать высокоскоростной обмен данными между диском и памятью.