title: Passing value to synchronize thread
body: <p>I'm new to thread, so i've been trying with this for hours (i'm using XE4), </p>
  
  <p>i have a simple thread </p>
  
  <pre><code>type
    TSendThread = class(TThread)
    private
    public
      procedure proc(const s : string);
    protected
      procedure Execute; override;
    end;
  
    procedure TSendThread.proc(const S: String);
    begin
      showmessage(s);
    end;
  </code></pre>
  
  <p>Now, in my main form, i want to call that "proc" with : </p>
  
  <pre><code>procedure TForm1.Button1Click(Sender: TObject);
  var
    t : TSendThread;
  begin
      t := TSendThread.create(true);
      t.Synchronize(nil, t.proc('foo'));
  end;
  </code></pre>
  
  <p>But whenever i try t compile that i get : </p>
  
  <blockquote>
    <p>There is no overloaded version of 'Synchronize' that can be called
    with these arguments</p>
  </blockquote>
  
  <p>that does not make sense (to me) because when i remove the "S" parameter from "proc" it works fine.</p>