title: I can't compile class with an interface
body: <p>I am trying to create a class that implements an interface but I get these errors: </p>
  
  <pre><code>[dcc32 Error] dl_tPA_MailJournal.pas(10): E2291 Missing implementation of interface method IInterface.QueryInterface
  [dcc32 Error] dl_tPA_MailJournal.pas(10): E2291 Missing implementation of interface method IInterface._AddRef
  [dcc32 Error] dl_tPA_MailJournal.pas(10): E2291 Missing implementation of interface method IInterface._Release
  [dcc32 Fatal Error] MainUnit.pas(8): F2063 Could not compile used unit 'dl_tPA_MailJournal.pas'
  </code></pre>
  
  <p>The code is:</p>
  
  <pre><code>unit dl_tPA_MailJournal;
  
  interface
  
  uses
    Windows,
    Generics.Collections,
    SysUtils,
    uInterfaces;
  
  type
    TtPA_MailJournal = class(TObject, ITable)
    public
      function GetanQId: integer;
      procedure SetanQId(const Value: integer);
      function GetadDate: TDateTime;
      procedure SetadDate(const Value: TDateTime);
  
      function toList: TList&lt;string&gt;;
  
      constructor Create(aId : Integer; aDate : TDateTime);
  
    private
      property anQId : integer read GetanQId write SetanQId;
      property adDate : TDateTime read GetadDate write SetadDate;
  end;
  
  implementation
  
  { TtPA_MailJournal }
  
  constructor TtPA_MailJournal.Create(aId : Integer; aDate : TDateTime);
  begin
    SetanQId(aId);
    SetadDate(aDate);
  end;
  
  function TtPA_MailJournal.GetadDate: TDateTime;
  begin
    Result := adDate;
  end;
  
  function TtPA_MailJournal.GetanQId: integer;
  begin
    Result := anQId ;
  end;
  
  procedure TtPA_MailJournal.SetadDate(const Value: TDateTime);
  begin
    adDate := Value;
  end;
  
  procedure TtPA_MailJournal.SetanQId(const Value: integer);
  begin
    anQId := Value;
  end;
  
  function TtPA_MailJournal.toList: TList&lt;string&gt;;
  var
    aListTable: TList&lt;TtPA_MailJournal&gt;;
    aTable: TtPA_MailJournal;
    aListString: TList&lt;String&gt;;
  begin
    aTable.Create(1,now);
    aListTable.Add(aTable);
    aTable.Create(2,now);
    aListTable.Add(aTable);
    aListString.Add(aListTable.ToString);
  
    Result := aListString;
  end;
  
  end.
  </code></pre>
  
  <p>And the interface is:</p>
  
  <pre><code>unit uInterfaces;
  
  interface
  
  uses
    Generics.Collections;
  
  type
    ITable = Interface
      ['{6CED8DCE-9CC7-491F-8D93-996BE8E4D388}']
      function toList: TList&lt;string&gt;;
    end;
  
  implementation
  
  end.
  </code></pre>