Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_rab_4_Fayly.docx
Скачиваний:
29
Добавлен:
09.02.2015
Размер:
423 Кб
Скачать
☆

Листинг 1. Создание нового или замещение существующего файла

procedure TForm1.Button1Click(Sender: TObject);

var

f: TextFile; // файл

fName: String[80]; // имя файла

i: integer;

begin

fName := Edit1.Text;

AssignFile(f, fName);

Rewrite(f); // открыть для перезаписи

// запись в файл

for i: =0 to Memol.Lines.Count do // строки нумеруются с нуля

writeln(f, Memol.Lines[i]);

CloseFile(f); // закрыть файл

MessageDlg('Данные ЗАПИСАНЫ в файл ',mtlnformation,[mbOk],0);

end;

В листинге 2 приведена процедура, которая запускается нажатием командной кнопки Добавить. Она открывает файл, имя которого указано в поле Edit1, и добавляет в него содержимое поля Memo1.

Листинг 2. Добавление в существующий файл

procedure TForm1.Button2Click(Sender: TObject);

var

f: TextFile; // файл

fName: String[80];.// имя файла

i: integer; begin

fName := Edit1.Text;

AssignFile(f, fName);

Append(f); // открыть для добавления

// запись в файл

for i:=0 to Memo1.Lines.Count do // строки нумеруются с нуля

writeln(f, Memo1.Lines[i]);

CloseFile(f); // закрыть файл

MessageDlg('Данные ДОБАВЛЕНЫ в файл ',mtInformation,[mbOk],0);

end;

Ошибки открытия файла

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

При запуске программы из Delphi в случае ошибки во время открытия файла возникает исключение, и на экране появляется диалоговое окно с сообщением (рис. 2).

Рис. 2. Пример сообщения об ошибке открытия файла (программа запущена из Delphi)

Если программа запускается из Windows, то окно с сообщением об ошибке выглядит иначе (рис. 3).

Рис. 3. Пример сообщения об ошибке открытия файла . (программа запущена из Windows)

Программа может взять на себя задачу контроля за результатом выполнения инструкции открытия файла. Сделать это можно, проверив значение функции IOResult (input-Output Result — результат ввода/вывода). Функция IOResuit возвращает 0, если операция ввода/вывода завершилась успешно; в противном случае — код ошибки (не ноль).

Для того чтобы программа смогла проверить результат выполнения операции ввода/вывода, нужно разрешить ей это делать. Для этого надо перед инструкцией вызова процедуры открытия файла поместить директиву компилятору — строку {$I-}, которая запрещает автоматическую обработку ошибок ввода/вывода. Эта директива сообщает компилятору, что программа берет на себя контроль ошибок. После инструкции открытия файла следует поместить директиву {$I+}, восстанавливающую режим автоматической обработки ошибок ввода/вывода.

На рис. 4 приведена блок-схема алгоритма открытия файла для добавления, обеспечивающего создание файла (и тем самым устраняющего ошибку, возникающую при попытке открыть несуществующий файл) в случае, если открываемого для добавления файла на диске еще нет.

Ниже приведен фрагмент программы, реализующий приведенный выше алгоритм открытия файла.

AssignFile(f,filename);

{$I-}

Append(f) // открыть для добавления

{$I+}

if IOResult<> 0 // ошибка открытия

then Rewrite(f); // открыть для записи

// здесь открыт существующий или новый файл

Рис. 4. Алгоритм открытия файла с обработкой возможной ошибки

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]