On Sat, Mar 5, 2011 at 8:24 AM, Mark Morgan Lloyd <markmll.fpc-pas...@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 _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal