[fpc-pascal] with statement using mulltiple objects

Mark Morgan Lloyd markMLl.fpc-pascal at telemetry.co.uk
Sun Sep 14 16:23:01 CEST 2014


Ched wrote:
> Hello All,
> 
> My two cents. The with statement is crystal clear for me. If newbies 
> prefer to use different manners to code the things, that are free to do 
> it. Using some kind of intermediate variable  ? That's make to code 
> difficult to understand, need do open begin/end blocks in some 
> situations. With make the code very clear, probably helps the compiler a 
> lot. Well used, it's 100% safe - I *never* encountered any problems with 
> it in 25+ years of intensive programmation.

The consensus is that it has to be used with caution. You get one vote, 
less a bit for calling those that disagree with you "newbies" :-)

I tend to use it if it will save more than around three repeated 
prefixes, but I'd be far happier if there were provision for declaring a 
temporary "shortcut" symbol:

with shortcut: TSomething= TreeRoot.SubDirs[Low(TreeRoot.SubDirs)]^ do
    begin
    shortcut.DirLogged             := true;
    shortcut.DirHatFocus           := false;
    shortcut.SubDirsExpanded       := true;
..

> So, they with statement has at least one aficionados: me. Was the with 
> statement present if the first versions designed by Wirth himself ?

I believe so, and he also overlooked the "dangling else" problem.

There's also this usage, which has plenty of pitfalls for the unwary or 
busy:

with TSomething.Create do begin
..
   Free
end;

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]



More information about the fpc-pascal mailing list