А если нужно выполнить десять обращений к различным свойствам или методам одного и того же объекта? Каждый раз писать одно и то же имя? Да! Но есть способ лучше — оператор with. Он выглядит следующим образом:
with имя_объекта do begin
код end;
Теперь все методы и свойства, которые находятся между begin и end, компилятор будет сначала искать у объекта имя_объекта, и если не найдет, то тогда уже продолжает поиск у того объекта, внутри метода которого написан код.
Вспомним пример из листинга 10.21, когда мы работали с реестром. В том примере создавался экземпляр класса TReglniFile, а потом вызывались его методы и свойства. А теперь сравните тот код со следующим вариантом:
Reg:=TRegIniFile.Create;
with Reg do begin
RootKey:=HKEY_LOCAL_MACHINE;
OpenKey('SYSTEM', true);
OpenKey('CurrentControlSet', true);
Free; end;
В этом примере после создания объекта Reg класса TReglniFile мы начинаем блок with, внутри которого все методы этого объекта можно писать в сокращенном варианте, без добавления Reg и точки в начале.