![]() Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
![]() Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
![]() |
Seek(F, FileSize(F));
5. Function FilePos(Var F):Longint; возвращает текущую позицию в файле, т.е. определяет номер текущей компоненты (указателя), считая от нуля. 6. Procedure Truncate(Var F); усекает размер файла до текущей позиции, все элементы после нее удаляются, и текущая позиция становится концом файла. 7. Procedure Rename(var F; NewName:string); переименовывает внешний файл любого типа. Процедура применяется к уже связанным файловым переменным F, но для которых еще не выполнена процедура открытия. Например: Assign (NewFile, ’a:\MyFile\Data.dat’); Rename (NewFile, ’a:\MyFilt\Mem.txt’); 8. Function EOF(var F):Boolean; возвращает для файла F признак конца файла, т.е. EOF = true, если указатель стоит за последним элементом файла или файл не содержит никаких элементов. Функция EOF часто используется в циклах. Например: .... While not EOF(FileName) do begin Read(FileName, X); .............. end;.......... 9. Procedure Erase(var F); удаляет внешний файл, связанный с переменной F. Используется только для закрытых файлов.
Типизированные константы не могут принимать значения файловых типов; также нельзя объявить типизированную константу-запись, если хотя бы одно из ее полей является полем файлового типа.
Пример. Составить программу, которая обеспечивает: 1. Создание внешнего файла C:\baza.dat, состоящего из записей типа Student, в которых содержится информация о студентах: фамилия и инициалы, дата рождения, адрес, номер группы, оценки по физике и математике, полученные на вступительных экзаменах. 2. Сортировку списка по алфавиту. 3. Выбор из списка всех студентов, родившихся раньше 1985 года и занесение их в новый файл типа Student (файл на диске назвать своей фамилией). 4. Вывод на печать всех данных о студентах из нового файла. Program files; uses printer; Type birthday = record {дата рождения} day: 1..31; month: 1..12; year: 1975..1985; end; adress = record {домашний адрес студента} gor: string [20]; {город} ul: string [20]; {улица} dom:integer; {№ дома} kv:integer; {№ квартиры} end; ball = record {Вступительные оценки} mat: real; {по математике} phis: real; {по физике} end; student = record FIO: string [20]; {фамилия и инициалы} date:birthday; {дата рождения} adr:adress; {адрес} grup: string [6]; {группа} exam:ball; {оценки} end; Var baz,new: file of student; {baz-базовый файл; new-свой файл} x,y:student; i,j,n,m:integer; c:char; S: string [40]; Begin writeln('Введите полное имя базового файла'); readln(S); {ввод полного имени файла} assign(baz,S); {связывание файловой переменной baz с именем физического файла} rewrite(baz); {открытие файла для записи} writeln('Введите новые данные'); {ввод новых данных в оперативную память} Repeat writeln('Введите данные о студенте'); write('Фамилия, имя, отчество: ');readln(x.fio); write('Число: ');readln(x.date.day); write('Месяц: ');readln(x.date.month); write('Год: ');readln(x.date.year); write('Город: ');readln(x.adr.gor); write('Улица: ');readln(x.adr.ul); write('№ дома: ');readln(x.adr.dom); write('№ квартиры: ');readln(x.adr.kv); write('Группа: ');readln(x.grup); write('Математика: ');readln(x.exam.mat); write('Физика: ');readln(x.exam.phis); write(baz,x); {запись переменной х в файл baz} writeln('Продолжить ввод? Да(Д)/Нет(Н)');readln(c); while not (c in ['д','Д','н','Н']) do begin writeln('Введите Д или Н'); readln(c); End until (c='Н') or (c='н'); {сортировка по алфавиту содержимого файла методом "пузырька"} L2: for i:=filesize(baz)-1 downto 1 do for j:=0 to i-1 do Begin seek(baz,j); {установка указателя на элемент с номером j} read(baz,x,y); {считывание из файла двух элементов} if x.fio>y.fio then Begin seek(baz,j); write(baz,y,x); {запись в файл считанных элементов в обратном порядке} end; end; seek(baz,0); {установка указателя в начало файла}
{связывание файловой переменной new c вновь создаваемым файлом} assign(new,'c:\Files\Ivanov'); rewrite(new); {открытие нового файла для записи} while not eof(baz) do begin read(baz,x); {считывание переменной из базового файла} if x.date.year<1986 then write(new,x);{выбор студентов и запись данных о них в новый файл} end; close(baz); {закрытие базового файла} seek(new,0); {установка указателя в начало файла new}
{считывание данных из своего файла и вывод их на экран} i:=1; while not eof(new) do Begin read(new,x); writeln(i,'. ',x.fio:16,' ',x.date.day:2,'.',x.date.month:2,'.', x.date.year, ' ',x.adr.gor:10,' ',x.adr.ul, ' ',x.adr.dom,'-',x.adr.kv); writeln(' ',x.grup,' Математика: ',x.exam.mat:4:1, ' Физика: ',x.exam.phis:4:1); writeln; i:=i+1; end; close(new); end. !! Проанализируйте программу files, введите ее текст в компьютер, откомпилируйте ее, запустите на счет, введите запрашиваемые данные и просмотрите результаты.
Date: 2016-02-19; view: 387; Нарушение авторских прав |