Раздел: Стандартные функции Паскаля

Процедура Append

Основы программирования 2.0 Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

Процедура Append открывает файл в режиме добавления данных. Синтаксис:

procedure Append(var F : Text);

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

ОШИБКИ

Если файл F не существует, то будет сгенерирована ошибка времени выполнения. Это поведение изменилось в операционных системах Windows и Linux, где в версиях до 1.0.6 в режиме добавления будет создан новый файл.

Пример:

 
program testfunc;
  
var F : Text;
 
begin
  Assign(F, 'test.txt');
  Rewrite(F);  //Файл открыт для записи и очистки (если существует)
  Writeln(F, 'This is the first line of text.txt');
  Close(F);
  Append(F);         	//Файл открыт для записи, но не очищается
                     	//а текст будет добавлен
  Writeln(F, 'This is the second line of text.txt');
  Close(F);
 
  //Здесь будет ошибка времени выполнения программы,
  //потому что файла testappend.txt не существует
  {Assign(F, 'testappend.txt');
  Append(F);
  Writeln(F, 'This is the first line of testappend.txt');
  Close(F);}
 
  //Чтобы ошибка не останавливала программу, можно сделать так
  {$I-}
  Assign(F, 'testappend.txt');
  Append(F);
  Writeln(F, 'This is the first line of testappend.txt');
  Close(F);
  {$I+}
  if IOResult <> 0 then
    Writeln('Error opening file: "testappend.txt"');
 
  ReadLn;
end.

Ошибка ввода-вывода в Паскале

В последней части программы мы использовали директивы компилятора, чтобы отключить генерацию ошибок ввода-вывода.

Для чего это делается?

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

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

Чаще всего это будет малопонятное обычному человеку сообщение, и этот обычный человек сильно расстроится, и, возможно, никогда уже не будет пользоваться вашей программой.

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

Мы здесь так и поступили - отключили проверку ошибок ввода-вывода, выполнили операцию, которая может вызвать ошибку, затем снова включили проверку ошибок, а также проверили итог работы нашей программы на критическом участке. Если в переменной IOResult не ноль, то при выполнении операции ввода-вывода произошла ошибка. О чём мы и сообщили пользователю.

А вообще обработка ошибок - это отдельная тема. Как-нибудь я к ней ещё вернусь...


Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика