[fpc-pascal] some new features to delphi prisem

J├╝rgen Hestermann juergen.hestermann at gmx.de
Wed Feb 24 07:10:21 CET 2010

> You are looking at the wrong example! Clearly, for variable assignment
> you don't gain anything. But for a function argument you do!


>   WriteLn('The value is ',(if X then 'true' else 'false'),
>           ' at the moment.');

Well, *this* can be done much easier ;-):

WriteLn('The value is ',X,' at the moment.');

But even if X is not boolean I would find that much more readable:

if X then s := 'true' else s := 'false',
WriteLn('The value is ',s,' at the moment.');

Even with the need of an intermediate variable (most of the time 
you can reuse an existing variable) I would prefer this one over 
the quite confusing nesting of case statement in an expression. 
It states much clearer what happens.

>   MakeBackup(FileName,ChangeExtension(FileName,
>     case BackupExtension of
>       exBak   : '.bak';
>       exBkp   : '.bkp';
>       exTilde : '~';
>     else '.bak'
>     End));

Again, this would be much clearer code:

case BackupExtension of
    exBak   : s := '.bak';
    exBkp   : s := '.bkp';
    exTilde : s := '~';
else          s := '.bak'

More information about the fpc-pascal mailing list