On Wed, 10 Nov 2010, Graeme Geldenhuys wrote:

Hi,

Attached is a simple console application that outputs a hierarchy of log
information. Under Delphi 7 we used to use a TInterfacedObject descendant
to track the call stack. This same trick was very handy for changing and
restoring the mouse cursor too.

When you create an instance it logs entry information, and increased the
indentation level. When that interface instance went out of scope in
decreased the indentation level and logs exit information.

Unfortunately this doesn't have the same affect under FPC (tested with
Windows and Linux).

The problem is that under FPC, the Interface instances immediately goes out
of scope. It seems Delphi held on to that instance even though you did not
store it in a variable. Once the current procedure/method is complete, then
only the Interface instance went out of scope.

It depends. You're not supposed to make assumptions on when an interface
goes out of scope. If you search the archives, you'll find multiple threads
about this, where Jonas (with his legendary patience) explained to people
why this assumption is false, and that indeed FPC is not compatible to
Delphi in this regard, and that this will not be changed.

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to