<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Il 25/10/2017 13:41, Mattias Gaertner
      via Lazarus ha scritto:<br>
    </div>
    <blockquote type="cite"
      cite="mid:20171025134143.74793ee6@limapholos.matflo.wg">
      <pre wrap="">No. The Delphi syntax is "ProcIdentifier:=Proc" or
"ProcIdentifier:=@Proc".

The "@Some:=" means assign something to address of Some. Which is bogus.
I guess Delphi's auto dereference actually translates this to
@Some^:=. Still bogus, but valid bogus.
</pre>
    </blockquote>
    <p>From embarcadero doc wiki
(<a class="moz-txt-link-freetext" href="http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Procedural_Types_(Delphi))">http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Procedural_Types_(Delphi))</a>:</p>
    <p>
      <blockquote type="cite">
        <h2><span class="mw-headline"
            id="Procedural_Types_in_Statements_and_Expressions">Procedural
            Types in Statements and Expressions</span></h2>
        <p>When a procedural variable is on the left side of an
          assignment statement, the compiler expects a procedural value
          on the right. The assignment makes the variable on the left a
          pointer to the function or procedure indicated on the right.
          In other contexts, however, using a procedural variable
          results in a call to the referenced procedure or function. You
          can even use a procedural variable to pass parameters:
        </p>
      </blockquote>
      [snip]<br>
    </p>
    <p>
      <blockquote type="cite">
        <p>The <b>@</b> operator can also be used to assign an untyped
          pointer value to a procedural variable. For example:
        </p>
        <div dir="ltr" class="mw-geshi mw-code mw-content-ltr">
          <div class="delphi source-delphi">
            <pre class="de1"> <span class="kw1">var</span> StrComp<span class="sy1">:</span> <span class="kw1">function</span><span class="br0">(</span>Str1<span class="sy1">,</span> Str2<span class="sy1">:</span> <span class="kw4">PChar</span><span class="br0">)</span><span class="sy1">:</span> <span class="kw4">Integer</span><span class="sy1">;</span>
    <span class="sy1">...</span>
 <span class="sy2">@</span>StrComp <span class="sy1">:</span><span class="sy3">=</span> GetProcAddress<span class="br0">(</span>KernelHandle<span class="sy1">,</span> <span class="st0">'lstrcmpi'</span><span class="br0">)</span><span class="sy1">;</span></pre>
          </div>
        </div>
      </blockquote>
      <br>
    </p>
    <p>ThisĀ  is no more true (as least as of X10 where I tested and it
      gave rise to a compiler error), but it has been for a long time.
      That's why I assumed that assigning an untyped pointer to a
      procedural variable was both legal and also properly supported.</p>
    <p>Giuliano</p>
    <p><br>
    </p>
  </body>
</html>