Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Прямой доступ к нетекстовым файлам ТРСодержание книги
Поиск на нашем сайте
Прямой доступ позволяет обращаться к записям файла по номерам. Нумерация записей начинается с нуля. Следующие подпрограммы позволяют организовывать прямой доступ к записям типизованных и нетипизованных файлов. Всюду ниже f - файловая переменная. 1. Функция FilePos(var f):longint возвращает номер позиции указателя файла. После открытия файла эта функция возвращает 0. 2. Функция FileSize(var f):longint возвращает количество записей файла. 3. Процедура Seek(var f;n:longint) перемещает указатель файла f в позицию с номером n. Обращение Seek(f; FileSize(f)) установит указатель в конец файла. 4. Процедура Truncate(f) усекает файл по текущей позиции указателя. Для удаления последней записи файла выполним последовательность операторов Seek(f;FileSize(f) -1); Truncate(f).
В ТР существует предопределенная переменная FileMode, которая определяет режим для открываемых файлов. По умолчанию FileMode=2, что соответствует режиму чтения и записи, FileMode=1 - только запись, FileMode=0 - только чтение. Процедуры Reset и Rewrite открывают существующие файлы в соответствии с установленными режимом. Вновь создаваемый файл процедурой Rewrite открывается в режиме чтения и записи независимо от значения переменной FileMode. Пример 4. Программа удаления четных чисел из файла целых чисел. Вспомогательный файл не используется. Порядок следования чисел не меняется. Program del_even; Var f:file of integer; i,j:longint; {i - указатель для чтения, j - указатель для записи} n:integer; f_name:string[40]; Begin write('Введите имя файла '); readln(f_name); Assign(f,f_name); Reset(f); i:=0; j:=0; while not Eof(f) do begin read(f,n); i:=i+1; if odd(n) then begin Seek(f,j); j:=j+1; write(f,n) {Записываем нечетное.} end; Seek(f,i) end; Seek(f,j); Truncate(f); Close(f) end. 26. ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ
Переменные, структура и тип которых определяются в разделе описаний блока (программы или подпрограммы), существуют и не изменяют своей структуры в течение всего времени работы блока. Такие переменные и связанные с ними структуры называются статическими. Использование статических переменных и структур удобно не всегда. Иногда требуется, чтобы переменные возникали уже при выполнении программы или меняли свои размеры и структуру. Такие переменные и структуры называются динамическими.
Ссылочный тип данных
В Паскале есть возможность создания динамических переменных с помощью переменных ссылочного типа. Описание ссылочного типа:
Значением типа указатель является адрес переменной базового типа. Тип указатель занимает 4 байта (сегмент и смещение). Пример 1. Описание переменных ссылочных типов. Type t_ptr_real=^real; t_vect=array[1..100] of char; Var p1, p2:t_ptr_real; {указатель на вещественное число} p_vect:^t_vect; {указатель на символьный массив} Описанные переменные-указатели являются статическими, каждая из них занимает 4 байта. При описании переменные не инициализируются, поэтому их значения считаются неопределенными. В ТР предопределен ссылочный тип pointer - нетипизованный указатель. Его значением является адрес ячейки памяти. Начиная с версии ТР7, в ТР реализован тип Pchar = ^Char. Инициализация переменной ссылочного типа может быть выполнена с помощью оператора присваивания или с помощью подпрограмм выделения памяти. Ссылочные типы совместимы по присваиванию, если их базовые типы тождественны или один из них является нетипизованным указателем. Существует предопределенная константа nil: pointer (пустой указатель). После присваивания р:=nil указатель p не ссылается ни на какую область памяти. Если переменная р1 уже инициализирована и р1¹ nil, то после присваивания р2:=р1 обе переменные ссылаются на одну и ту же область памяти. Тип Pchar, кроме того, совместим по присваиванию с символьным массивом и строковым типом.
|
|||||
|
Последнее изменение этой страницы: 2017-02-07; просмотров: 207; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.236 (0.008 с.) |