>>>Hi James,
>>>
>>>Well then, why is this not in the documentation?! It is very important to know this, isn't it. I can say I'm a really experienced vfp developer, doing vfp since 1990. But this has never been told or explained to me, nowhere, not in the docs, not in the Hackers guide. 'By-design' may be what has been told to you, but to me that sounds like a rationalisation, to hide the real reason: a design flaw or simply a blind spot for this when implementing it, in both cases a flaw they somehow didn't want to repair.
>>>
>>>Re-using the cached version of a previously instantiated object is smart enough, but of course that should not imply the re-use of any initial values.
>>>
>>>>Peter --
>>>>
>>
>>It is not a language behaviour,
>>it is an optimization.
>>
>>Every optimization pays a price!
>>
>
>I'm not sure it's an optimization if it leads to incorrect results. I could drive my car 100 miles an hour (maybe) but that might not optimize the outcome. As you imply, going for pure speed endangers the integrity side of the tradeoff.
>
The price is a limit or the risk of some side effect.
On VFP you can set a class property to deterministic values only,
a scx form have not this limit.
Example:
Set a CLASS'S property (Tag) to a defined function
=(this.SettProp())
procedure SettProp
return dtoc(date())
try to add this class to a scx form ( see the error !! )
change the property to "(this.SettProp())"
add the class to the scx ( no error !!)
now change the member property to "=(this.SettProp())"
this expression is evaluated every time the scx is load.
>
>>>>By design.
>>>>
>>>>FoxPro does neat things with caching classes you have referenced so it does not have to re-create them from
>>>>scratch every time you use them.
>>>>
>>>>This is the same problem experienced in VCX-based classes where the property value is created with an '=',
>>>>which is executed the first time the class is created only.
>>>>
>>>>>Hi all,
>>>>>
>>>>>In the code hereunder the nStart property is set to the value of seconds() at the moment of creating the object. However, if I create another instance of the object (while the first is still active) the property does not get the value of seconds() of the moment of creation, but appears to be totally equal to the property of the first instance!
>>>>>
>>>>>I imagine I can get around this by redeclaring it in the Init(). But why is this happening? Another bug or 'just' a quirck? Or is it by-design??
>>>>>
>>>>>
DEFINE CLASS cusLogFileHandler AS custom
>>>>>
>>>>> nHandle = 0
>>>>> nErrors = 0
>>>>> dStart = date()
>>>>> nStart = seconds()
>>>>> cFileName = ""
>>>>>
>>>>> PROCEDURE init( tcFileName, tlNew )
>>>>> local lcWhat
>>>>>
>>>>> with this
>>>>> *
>>>>>