Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Установление связи с файлом.
Процедура Assign устанавливает связь между конкретным физическим файлом на жестком диске и переменной файлового типа, которая представляет этот файл в программе. Assign(f,d); где f - файловая переменная, d - имя файла в виде строкового выражения. Например, Assign (f, ’fff.dat’); Assign (g, ’c:\mydir\sss.dat’);
Если файл находится в другом каталоге, а не в каталоге программы, то следует указать полный путь к файлу. Если файл находится в текущем каталоге программы, то можно указывать только имя файла и его расширение, если оно имеется.
Процедуры Reset и ReWrite предназначены для открытия файлов. Например: Reset (F); ReWrite (F); Процедура Reset предполагает, что открываемый файл уже существует, в противном случае возникает ошибка. Процедура ReWrite допускает, что файл не существует, в этом случае он создается; если файл существует, то ReWrite очищает его. В обоих случаях текущий указатель файла устанавливается на его нулевой элемент. Процедура Close завершает действия с файлом: Close (файловая переменная); Например: Close (f); Close (g); При выполнении данной процедуры ликвидируются внутренние буферы, образованные при открытии файла. После закрытия файловую переменную можно связать с помощью Assign с другим дисковым файлом. Можно также открыть заново старый файл, так как связь с переменной Assign с файлом после его закрытия не теряется (при условии, что файловая переменная не переопределена). Процедура Erase уничтожает файл: Erase (файловая переменная); Перед ее выполнением необходимо закрыть файл, если он ранее был открыт с помощью процедур Reset или ReWrite. Операции ввода-вывода. Операции ввода-вывода реализуются с помощью процедур Read и Write. Они могут вызываться с различным числом параметров. Эти параметры могут иметь различные типы. Read читает запись из файла в программу: Read(f, a); где f - файловая переменная; a - список ввода переменных, в которые будут помещаться читаемые из файла значения (тип А должен совпадать с типом файловой переменной). Действия, осуществляемые при чтении элемента файла: – читается элемент файла, на котором стоит указатель; – прочитанное значение присваивается переменной из списка ввода; – указатель смещается на следующий элемент файла. Если в процессе выполнения процедуры Read текущий указатель переходит на позицию, где нет информации (конец файла), то чтение будет завершено.
Процедура Write записывает в файл информацию из программы. Write (f, в); где f - файловая переменная; b – выражение; тип выражения должен совпадать с типом файловой переменной. Действия, осуществляемые при записи данных в файл: – выражение помещается в файл в место, отмеченное указателем; – указатель передвигается на одну позицию.
Перемещение по файлу. Изменение положения указателя осуществляется с помощью оператора: Seek(f, i); где f - переменная файлового типа, i - порядковый номер элемента файла, на который необходимо установить указатель (тип переменной - longint). Например, оператор установки указателя на начало файла имеет вид: Seek(f,0); Функция FileSize (файловая переменная) возвращает общее число элементов файла. Функция FilePos(файловая переменная) возвращает номер элемента, на который установлен текущий указатель. Например, Seek(f, FileSize(f)-1); – устанавливает указатель на последнюю запись файла (последний элемент). Seek(f, FileSize(f)); - устанавливает указатель за последний элемент файла. Seek(f, FilePos(f)+1) пропуск элемента.
Функция Eof(файловая переменная) дает значение true, если достигнут конец файла, false – в противном случае.
Процедура Truncate используется для отсечения от файла элементов, начиная с текущей позиции указателя включительно. Truncate (файловая переменная);
Команды: {$I-} отключение автоматического контроля за правильностью открытия файла и возможность приостановить работу программы после открытия файла; {$I+} включение автоматического контроля за правильностью открытия файла, при неправильном открытии файла происходит аварийное завершение программы. IOResult – функция, дающая некоторое целое число, анализируя которое, можно оценить, удачно или неудачно прошла процедура открытия файла. Если функция равна 0, то файл открылся нормально. Assign (f, ‘file.dat’); {$i-} Reset(f); l:= IOResult; {$i+} if l <> 0 then ReWrite (f); Пример 1. Сформировать файл f, компоненты которого являются целыми числами. Переписать в файл h кратные 5, а в файл g не кратные 5 элементы. Var h,g,f: file of integer;
a,i: integer; Begin Assign(f,’fff.dan’); ReWrite(f); a:= 1; while a <> 0 do begin Write(‘Введите число, конец ввода – 0’); if a <> 0 then Write (f,a); end; Seek(f,0); Assign(h,’hhh.dan’); ReWrite(h); Assign(g,’ggg.dan’); ReWrite(g); for i:=1 to filesize(f) do Begin Read(f,a); if a mod 5 =0 then Write(h,a) Else Write(g,a); end; Write(‘Файл f’); Seek(f,0); for i:= 1 to filesize(f) do Begin Read(f,a); Write(a,’ ‘); end; WriteLn; WriteLn(‘Файл н, кратные 5’); Seek(h,0); while not Eof(h) do Begin Read(h,a); Write(‘a,’ ‘); end; WriteLn; Seek(g,0); WriteLn(‘Файл g, не кратные 5); while not Eof(g) do Begin Read(g,a); Write(a,’ ‘); end; WriteLn; Close(f); Close(g); Close(h); ReadLn; End.
Пример 2. Написать программу формирования и вывода содержимого файла на экран в виде таблицы. Каждая запись файла имеет поле: номер зачетки, ФИО, стипендия. Предусмотреть возможность добавления записей в файл, если он существует и первоначального ввода, если файла нет. Режимы работы вывести на экран в виде меню: Меню 1. Ввод 2. Вывод 3. Выход Список студентов
Ширина таблицы 46 позиций (13+20+9+4 позиции для разделителей). uses Crt; { использование модуля Crt, доступ к экрану в текстовом режиме } Type stud = record nz: string[10]; fio: string[20]; stip: real; end; Var f: file of stud; a: stud; n, k: integer; t:real; Begin Assign (f, ‘st.rez’); {$i-} Reset(f); k:= IOResult; {$i+} if k <> 0 then ReWrite (f); n:=0; {Номер режима работы} while n<=2 do begin {Очистка экрана} ClrScr; {x – позиция в строке, y – строка} GotoXY (30, 10); WriteLn (‘Меню’); GotoXY (20, 14); WriteLn (‘1. Ввод’); GotoXY (20, 16); WriteLn (‘2. Вывод’); GotoXY (20, 18); WriteLn (‘3. Выход’); GotoXY (15, 20); Write (‘Введите номер режима работы =>’); ReadLn (n); ClrScr; case n of 1: begin if k=0 then Seek (f, FileSize(f)); a.nz:=’1’; while a.nz<>’0’ do Begin Write(‘Введите номер зачетки или 0, если конец ввода =>’); ReadLn(a.nz); if a.nz <> ‘0’ then Begin Write (‘ФИО=>’); ReadLn (a.fio); Write (‘Стипендия=>’); ReadLn (a.stip); Write (f,a); end; end; Reset(f); k:=0; end; 2: begin if k<>0 then Begin writeln (‘файл пуст’); readln; end; if k =0 then Begin Seek (f, 0); WriteLn (‘ Список студентов’); WriteLn(‘_________________________ ____________________’); WriteLn (‘| номер зачетки | фио | стипендия |’); WriteLn(‘_________________________ ____________________’); t:=0; while not Eof (f) do Begin Read (f,a); WriteLn (‘| ‘, a.nz:10, ‘ |’, a.fio:20, ‘| ’, a.stip:6:2, ‘ |’); t:=t+a.stip; end; WriteLn(‘_________________________ ____________________’); WriteLn(‘| итого |’,t:8:2,’ |’); WriteLn(‘_________________________ ____________________’); ReadLn; end; end; 3: Close (f); end; {Конец case} end; {Конец while-меню} ClrScr; end.
|
||||||||||||
Последнее изменение этой страницы: 2017-02-05; просмотров: 266; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.146.35.203 (0.033 с.) |