|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Урок № 25. Стандартные процедуры и функции при работе с файламиЧтение и запись - две самые распространенные операции, выполняемые при работе с файлами. Для их осуществления применяются специальные функции файлового ввода/вывода. Итак, для выполнения операции чтения или записи необходимо произвести следующие действия: 1. Объявить файловую переменную необходимого типа. 2. При помощи функции AssignFile связать эту переменную с требуемым файлом. 3. Открыть файл при помощи функций Append, Reset, Rewrite. 4. Выполнить операции чтения или записи. При этом, в зависимости от сложности задачи и структуры данных, может использоваться целый ряд вспомогательных функций. 5. Закрыть файл при помощи функции СloseFile. Для контроля за текущей позицией в файле применяются две основные функции. Функция EOF(F) возвращает значение True, если достигнут конец файла. Функция EOLN(F) аналогично сигнализирует о достижении конца строки. Естественно, в качестве параметра в функции необходимо передавать файловую переменную. Процедура Seek(var F; N: Longint); - обеспечивает смещение текущей позиции на N элементов. Размер одного элемента в байтах зависит от типа данных файла (от типизированной переменной). Erase(f) - удаляет файл FilePos(f) - возвращает текущую позицию чтения/записи в файл Flush(f) - сбрасывает кэшированные файловые операции на диск Rename(f, 'MyNewFileName.txt') - переименование файлов Truncate(f) - файл обрезается до текущей позиции чтения/записи.
Пример 1. Дан текстовый файл с набором символов. Проверить, есть ли в файле сочетание символов «abcdef», входящих в строку. Program Stroki; label l1; Var t,K:string; i,l:integer; f:text; Begin assign(f,'c:\str.txt'); reset(f); readln(f,t); l:=0; for i:=1 to length(t) do begin k:=copy(t,i,6); if k='abcdef' then l:=1; end; if l=1 then writeln('sochetanie "abcdef" vhodit v stroky') else write('sochetanie "abcdef" ne vhodit v stroky'); readln; end. Пример 2. Имеется файл, содержащий массив из 10 вещественных чисел. Найти и вывести на экран все отрицательные элементы и сумму их квадратов. program pr1; var X:array[1..10] of real; i:integer; Summa:real; f:text; begin Summa:=0; assign(f,'c:\tyh\ins.txt'); reset(f); i:=1; while not eof(f) do begin readln(f,X[i]); if x[i]<0 then begin Summa:=Summa+X[i]*X[i]; writeln('x[',i:2,']=',' ',X[i]:8:3, ' Summa= ',summa:8:3); i:=i+1; end; end; readln; close(f); end.
Пример 3. Дан файл с именем «shisla.txt», содержащий целые числа. Проверить, является ли файл упорядоченным (отсортированным). program hhh; var f:text; n,i,K:integer; begin assign(f,'shisla.txt'); reset(f); readln(f,N); K:=N; while not eof(f) do begin readln(f,N); if K>N then begin writeln('file ne uporyadochen'); exit; end else K:=N; end; writeln('file uporyadochen'); readln; close(f); end. Пример 4. Дан файл, содержащий данные о сотрудниках: фамилия, год, месяц и день рождения. Выбрать и записать в другой файл данные тех сотрудников, которые родились в год быка, а затем выбрать тех сотрудников, которые родились осенью. program t2; label l1; type sotryd1=record fam:string[8]; godrog:integer; mes:integer; den:integer; end; var f1,f:text; sotryd:sotryd1; i:integer; begin assign(f,'a:\ishod.txt'); reset(f); assign(f1,'a:\vish.txt'); append(f1); writeln(f1,'Список сотрудников, родившихся в год быка: '); while not eof(f) do begin with sotryd do readln(f,fam,godrog,mes,den); for i:=1 to 10 do begin if sotryd.godrog=1901+i*12 then begin writeln(f1,sotryd.fam,sotryd.godrog); goto l1; end; l1: end; end; writeln(f1,'Список сотрудников, родившихся осенью'); reset(f); while not eof(f) do begin with sotryd do readln(f,fam,godrog,mes,den); if (sotryd.mes=9) or (sotryd.mes=10) or (sotryd.mes=11) then writeln(f1,sotryd.fam,sotryd.mes); end; close(f); close(f1); end. Пример 5. Составить программу для создания типизированного файла, содержащего информацию о студенте: имя, возвраст, является ли читателем городской библиотеки, № зачетки, группа. program F_stud; type strud=record name:string[8]; Age:integer; Membbibl:boolean; N_zachetki:integer; Gruppa:string[4]; end; var f:file of stud; student:stud; begin AssignFile(f, 'c:\MyFile.rec'); Rewrite(f); student.Name:= 'Vitaly'; // или readln(student.name); student.Age:= 17; // или readln(student.Age); student.Membbibl:= True; // или readln(student.Membbibl); student.N_zachetki:= 12345; // или readln(student.N_zachetki); student.gruppa:= ‘2T2’; // или readln(student.gruppa); Write(f, student); Closefile(f); End.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.) |