Ein anderes Problem bei with ist, dass man z.B. darin Variablennamen benutzt, die dann z.B. durch ein Delphiupdate plötzlich auch in dem with Objekt verfügbar sind. Solche Probleme dann zu finden ist auch extrem aufwendig, da es keinerlei Compilerhinweise darauf gibt.
Da ich auch dazu neige, eher weniger als mehr tippen zu müssen, kopiere ich mir in solchen Fällen das Objekt, dessen Properties und Methoden ich benötige, in den Zwischenspeicher und muß das dann auch nicht mehr tippen, in folgendem Fall die fett markierten Teile:
Ich deklariere da schlicht eine Variable dafür und speichere das zwischen. So funktioniert intern with ja auch. Auf diese Weise ist der Quelltext übersichtlicher, aber nicht langsamer als mit with, ich kann ordentlich debuggen und es gibt keine möglichen Nebeneffekte.
Delphi-Quellcode:
var
LabelFont: TFont;
LabelFont := Label1.Canvas.Font;
LabelFont.Size := 12;
LabelFont.Name := 'Calibri';
LabelFont.Color := clRed;
LabelFont.Style := [fsBold];