Раздел: Стандартные функции Паскаля
Процедура Append
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Процедура 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
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |