IPB

> Лекция №7.2: Записи. Бинарные файлы
Форум
Загрузка...
 
Час быка
Час быка
Карта Интернета
Internet Map
Яндекс.Метрика

страницы: 1 2 3 4 5

Содержание

Доступ к полям

Обратиться к полю записи можно следующим способом:

<имя_записи>.<имя_поля>

Например:

month := my_birthday.month + 1;

Как уже было упомянуто, коллизий между переменной с именем month и полем записи my_birthday.month не возникает.

Доступ к полю двумерной таблицы осуществляется аналогичным образом (жирные скобки являются обязательным элементом синтаксиса):

<имя_таблицы>[<индекс>].<имя_поля>

Эту запись можно трактовать так:

(<имя_таблицы>[<индекс>]).<имя_поля>

Например:

birthdays[mother].day := 9;

Оперирование несколькими полями

Если программе предстоит несколько раз подряд обращаться к полям одной и той же записи, может оказаться неудобным записывать это обращение полностью:

my_birthday.day:= 17;
my_birthday.month:= 3;
my_birthday.year:= 2004;

Для сокращения таких участков служит оператор with, позволяющий обращаться к полям, не указывая каждый раз имя всей записи:

with <имя_записи> do
begin
  <операторы>
  { имена полей здесь используются как <имя_поля>, 
    а не как <имя_записи>.<имя_поля>}
end;

Например:

with my_birthday do
begin
  day := 17;
  month := 3;
  year := 2004;
end;

Замечание. Для того чтобы внутри оператора with можно было обратиться не к полю записи, а к глобальной переменной с таким же именем, перед этой переменной нужно указать (через точку) имя программы: <имя_программы>.<имя_переменной>.

Например:

with my_birthday do
begin
  day := 17;
  month := 3;     {поле записи birthday.month}
  year := 2004;
  programma.month := 5; {глобальная переменная month}
end;
Вложенные операторы with

Если возникает необходимость расположить один оператор with внутри другого, то любую переменную (если перед ней явно не указано имя записи), находящуюся под внутренним оператором with, компилятор пытается интерпретировать в такой последовательности:

  1. если во внутренней записи есть поле с искомым именем, то поиск заканчивается;
  2. если во внутренней записи поля с таким именем нет, то поиск производится среди полей внешней записи (если вложенных операторов with больше, чем два, то поиск ведётся последовательно во всех задействованных записях в направлении «изнутри наружу»);
  3. если среди полей всех вложенных записей нет искомого идентификатора, компилятор считает его глобальной переменной.

Например:

type date = record
    day : 1..31;
    month : 1..12;
    year : 1900..2005;
 end;
  student = record
    name : string[100];
    year : 1950 .. 2005; {год поступления}
    gruppa : string[5];
    birth : date;
 end;

var ivanov : student;

begin
 {...}
 with ivanov do
 begin
   {...}
   with birth do
   begin
     {...}
      year := 2001;       {birth.year}
      gruppa := 'IT01';    {ivanov.gruppa}
     {...}
   end;
   {...}
 end;
end;

страницы: 1 2 3 4 5

Примечания

 
 К началу страницы 
 

Код для вставки: :: :: :: ГОСТ ::
Поделиться: //
 


-
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"