45f9d30a

Вложенные операторы 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;




Начало  Назад  Вперед