es ist laut Delphi Hilfe effizienter.
Wo hast Du das gelesen?
WITH legt eine lokale Variable an, welche als eine Art SELF und somit als aktueller Namespace fungiert.
Wenn an WITH nur eine einfache, lokale Variable übergibt, dann wird wirklich da nichts optimiert.
Übergibt man an WITH aber ein Funktionsresult oder einige Property, dann wird da natürlich so Einiges optimiert, da das Konstruct innerhalb des WITH-DO nur einmal ausgewertet wird.
In solchen Fällen legt man Funktionsresult oder Property üblicherweise selbst in einer lokalen Variablen ab.
Technisch gibt es eventuell einen theoretischen Vorteil für das With (Stack vs Register für die lokale Variable!?).
Sobald man aber mal die Ineffizienz berücksichtigt, die dadurch entsteht, dass der With-Code schwerer zu maintainen ist, gibt es praktisch keine Rechtfertigung mehr auch nur ein einziges With zu verwenden.