Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 374; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.) |