Ханс Пассант пытается понять, что выражение «с» создает копию границ, работает с ней, а затем выбрасывает ее. У меня недостаточно информации, чтобы это проверить, но я чувствую, что это маловероятно - оператор присваивания Delphi работает по ссылке, поэтому неявные мелкие копии на самом деле случаются не так часто.
Однако операторы with намеренно создают особый вид переменной области видимости. Вы могли бы захватывать поле внутри границ, или вы могли захватывать поле из содержащего метода, или вы могли бы даже захватывать поле из предыдущего незамкнутого оператора «with». Автоматический рефакторинг не может касаться оператора with. Добавление поля в класс, с которым работает оператор with, может нарушить ваш метод.
Рассмотрим
with myLongNamedComponent.anotherLongNamedChild.pedanticRectangle do
begin
x:=1;
y:=2;
width:=33;
height:=44;
end;
На самом деле это лучше записать как
var bounds := new Rectangle(0,0,0,0);
bounds.x := 1;
bounds.y := 2;
bounds.width := 33;
bounds.height := 44;
myLongNamedComponent.anotherLongNamedChild.pedanticRectangle := bounds;
TL: DR; оператор with больше не считается хорошей практикой кодирования.