Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Чтение данных из файла




Открытие файла

Ввод из файла

 

Программа может вводить исходные данные не только с клавиатуры, но и из текстового файла. Для того чтобы воспользоваться этой возможностью, нужно объявить файловую переменную типа TextFile, назначить ей при помощи инструкции AssignFile имя файла, из которого будут считываться данные, открыть файл для чтения (ввода) и прочитать (ввести) данные, используя инструкцию read или readln.

 

 

Открытие файла для ввода (чтения) выполняется вызовом процедуры Reset, имеющей один параметр — файловую переменную. Перед вызовом процедуры Reset с помощью функции AssignFile файловая переменная должна быть связана с конкретным файлом.

Например, следующие инструкции открывают файл для ввода:

 

AssignFile(f, 'c:\data.txt'); Reset(f);

 

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

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

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

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

 

Листинг 16.3. Обработка ошибки открытия файла (фрагмент программы)

 

var

fname: string[80]; // имя файла

f: TextFile; // файл

res: integer; // код ошибки открытия файла (значение lOResult)

answ: word; // ответ пользователя

begin

fname:= 'a:\test.txt'; AssignFile (f, fname);

repeat

<$I-}

Reset(f); // открыть файл для чтения

{$!+}

res:=IOResult;

if res <> 0

then answ:=MessageDlg('Ошибка открытия '

+ fname+#13 +'Повторить попытку?',mtWarning,

[mbYes, mbNo],0); until (res= 0) OR (answ = mrNo);

if res <> 0

then exit; // завершение процедуры

// здесь инструкции, которые выполняются

// в случае успешного открытия файла

end;

 

 

Чтение из файла выполняется при помощи инструкций read и readln, которые в общем виде записываются следующим образом:

read(ФайловаяПеременная, СписокПеременных);

readln(ФайловаяПеременная, СписокПеременных);

 

где:

· ФайловаяПеременная — переменная типа TextFile;

· СписокПеременных — имена переменных, разделенные запятыми.

 




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 247; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.