АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Определение конца файла

Читайте также:
  1. D. Определение звука в слове (начало, середина, конец слова)
  2. I Этап. Определение проблемы
  3. I.2. Определение расчетной длины и расчетной нагрузки на колонну
  4. III. Анализ изобразительно-выразительных средств, определение их роли в раскрытии идейного содержания произведения, выявлении авторской позиции.
  5. IV. Определение победителей.
  6. IV. Разработка файла Отчет
  7. SDRAM: Определение
  8. Безработ: определение, типы, естественный уровень, социально-экономические последствия.
  9. Безработица : определение, типы, измерение, последствия
  10. Билет 8. Период Асука. Политическая жизнь Ямато конца VI-VII вв.
  11. Борьба за нормальный рабочий день. Принудительные законы об удлинении рабочего дня с середины XIV до конца XVII столетия
  12. В: Что значит версия данного файла?

Фрагмент программы обработки ошибок открытия файла

label

bye;

var

f: TextFile;

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

res: integer; // значение IOResult

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

begin

fname:= ‘d:\ test.txt’;

AssignFile (f, fname);

repeat

{$I-}

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

{$I +}

res:= IOResult;

if res <> 0

then answ:= MessageDlg (‘Ошибка открытия ‘ + fname +#13 + ‘Повторить попытку?’, mtWarning, [mbYes, mbNo], 0);

until (res = 0) OR (answ = mrNo);

if res <> 0 then goto bye;

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

bye:

 

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

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

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

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

где ФайловаяПеременная – перменная типа TextFile;

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

 

Чтение чисел

В текстовом файле находятся не числа, а их изображения. Действие, выполняемое операторами read и readln, состоит из двух: сначала из файла читаются символы до появления разделителя (пробела или конца строки), затем прочитанные символы, являющиеся изображением числа, преобразуются в число.

procedure Simple;

var

f: TextFile;

a, b: integer;

begin

AssignFile (f, ‘d:\data.txt’);

Reset (f);

read (f, a);

readln (f, b);

end;

 

Чтение строк

В программе строковая переменная может быть объявлена с указанием длины или без указания:

stroka1: string [10];

stroka2: string.

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

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

 

Определение конца файла

Для определения конца файла используется функция EOF (End Of File – конец файла). У функции EOF один параметр – файловая переменная. Значение функции EOF равно FALSE, если прочитанный элемент данных не является последним в файле, т.е. возможно дальнейшее чтение из файла. Если прочитанный элемент данных является последним, то значение EOF равно TRUE.

 

Задача. На диске есть текстовый файл, содержащий информацию о доходах. Каждая строка файла начинается с цифры, соответствующей величине дохода, за которой следует строка символов – комментарий. Файл может быть таким:

250 Чтение лекций

1000 Гонорар за книгу

120 Доход по акциям ГАЗПРОМ

Вычислить суммарный доход.

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

На форме имеется один компонент – метка (Label1), используемый для вывода результатов.

procedure Tform1.FormActivate (Sender: TObject);

var

fname: string [20];

f: TextFile; {файловая переменная}

incom: integer; {доход из очередной строки файла}

summ: integer; {суммарный доход}

begin

fname:= ‘d:\incom.txt’;

AssignFile (f, fname);

{$I -}

Reset (f); {открытие для чтения}

{$I +}

if IOResult =0

then begin

summ:=0;

while NOT EOF (f) do {пока не конец файла}

begin

readln (f, incom);

summ:= sum + incom;

end;

CloseFile (f);

label1.caption:= ‘суммарный доход: ‘ + IntToStr (summ);

end

else

label1.caption:= ‘ошибка открытия ‘ + fname; end;

 


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)