[fpc-pascal] Read-only global references

Marcos Douglas md at delfire.net
Sat Mar 5 22:09:27 CET 2011


On Sat, Mar 5, 2011 at 8:24 AM, Mark Morgan Lloyd
<markMLl.fpc-pascal at telemetry.co.uk> wrote:
> Where a unit exports an instance of an object, what's best practice for
> making this read-only? I'm referring to the object reference itself here,
> not properties of the object.
>
> Where I've done this in the past I've used a function:
>
> interface
>
> function InitText: TFormattedString;
>
> implementation
>
> var     xInitText: TFormattedString= nil;
>
> function InitText: TFormattedString;
>
> begin
>  result := xInitText
> end { InitText } ;
>
> Is there a better way using e.g. global properties that doesn't necessitate
> both a property and an explicit function?
>
> property InitText: TFormattedString read xInitText;
>
> The obvious problem here is that xInitText is a forward reference to an
> unexported variable.

Make a function to return a global variable does not make it read only.
If I use your function like this:
o := InitText;
o := nil;  //this is the same xInitText = nil


Marcos Douglas



More information about the fpc-pascal mailing list