Ich benutze WITH sehr oft - und ich bin bisher immer gut damit gefahren in den letzten 16 Jahren, in denen ich Pascal/Object Pascal code.
Während der Entwicklung verwende ich WITH nur bei Initialisierungen von Records oder Objekten:
Delphi-Quellcode:
with SunsiteRec do
begin
x1:=1;
x2:=19;
//Text:='';
Msg:='';
end;
Im Debugger habe ich ohnehin den SunsiteRec als Watch mit ",r"-Parameter drin, sehe also gleich, ob alles glattgeht. Ansonsten wird erstmal ausformuliert, auch um solche Mehrdeutigkeiten wie "Caption:=Caption" und ähnliches sofort zu erkennen und bei der Deklaration von Objekten von vornherein zu eliminieren.
Delphi-Quellcode:
SunsiteRec.x1:=RxNumberEdit1.IntValue-217;
SunsiteRec.x2:=RxNumberEdit2.IntValue div 4;
//SunSiteRec.Text:=Edit1.Text;
SunsiteRec.Msg:=Edit1.Text;
Wenn der Code durchgetestet wurde und läuft, wird das ausformulierte durch WITH zusammengekürzt, Mehrdeutigkeiten - sofern noch vorhanden - bleiben dann einfach stehen. Laut
OH löst der Compiler dann das WITH-Element nur einmal auf und nicht jedesmal, trägt also auch zur Optimierung bei.
Delphi-Quellcode:
with SunsiteRec do
begin
x1:=RxNumberEdit1.IntValue-217;
x2:=RxNumberEdit2.IntValue div 4;
//SunSiteRec.Text:=Edit1.Text;
Msg:=Edit1.Text;
end;
Ich habe schon ein paar Millionen Zeilen Code produziert und nie Probleme gehabt - auch nicht mit den Nachfolgern, die nach mir ein Projekt weiterbetreuten.