<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    That would be much clearer to use, if Pascal had scope local
    variables and auto created stack objects:<br>
    <br>
    <font face="monospace">begin<br>
         var x: SetBusyMouseCursorObject;<br>
      end;</font><br>
    <br>
    <br>
    That would also make the ref-counted classes at language level
    unnecessary, because you could just use<br>
    <pre class="de1">      type TObjectWithRefCounting <span class="sy3">=</span> specialize TRefCountingObject<TObjectWithoutRefCounting><span class="sy1">;</span></pre>
    <br>
    <br>
    <br>
    Benito<br>
    <br>
    <div class="moz-cite-prefix">On 06/30/2013 10:14 PM, Graeme
      Geldenhuys wrote:<br>
    </div>
    <blockquote cite="mid:51D091B3.8020002@geldenhuys.co.uk" type="cite">
      <pre wrap="">On 2013-06-30 17:25, Hans-Peter Diettrich wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">I'm somewhat confused now. When an object has an definite "last use", it 
should not matter when it is destroyed afterwards, sooner or later.
</pre>
      </blockquote>
      <pre wrap="">

The simplest example... You have code that executes when the Interface
gets destroyed. A very simple example (you can Google for exact code or
more examples) is using Interfaces to change the mouse cursor to "busy",
then let the Interface set the mouse cursor back to what it initially
was when the Interface finally goes out of scope.

eg: [not really code - ]

procedure SomeLongProcedure;
begin
  SetBusyMouseCursor;
  // <----------------------- (2)
  ... long running code here
end;   //  <------------------ (1)


(1) is where Delphi will release the interface, and the mouse cursor
will be reset. Always at the end of a code block.

(2) is where FPC will release the interface, and the mouse cursor will
be reset [at the undesired place].


Like I said, this is a very simple example - but the Delphi behaviour is
consistent since forever, and allows for some very nifty code (eg:
debugging call stacks etc) - and without the need to define local
interface variables.

Regards,
  - Graeme -



--
_______________________________________________
Lazarus mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Lazarus@lists.lazarus.freepascal.org">Lazarus@lists.lazarus.freepascal.org</a>
<a class="moz-txt-link-freetext" href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>