title: Delphi XE4 E2010 Incompatible types: 'Cardinal' and 'Pointer'
body: <p>Hello i was trying to compile the firedac dll development sample under delphi xe4 and it came up with the following error</p>
  
  <pre><code>[dcc32 Error] Unit1.pas(61): E2010 Incompatible types: 'Cardinal' and 'Pointer'
  </code></pre>
  
  <p>I have marked where the error is in the code.</p>
  
  <p>Unit 1 is the executable.</p>
  
  <pre><code>unit Unit1;
  
  interface
  
  uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, uADStanIntf, uADStanOption, uADStanDef, uADPhysIntf,
    uADDatSManager, uADStanParam, uADDAptIntf, StdCtrls, Grids, DBGrids,
    DB, uADPhysManager, uADPhysMSAcc, uADGUIxFormsWait, uADCompGUIx, uADCompDataSet,
    uADCompClient, uADStanError, uADGUIxIntf, uADStanPool, uADStanAsync,
    uADDAptManager, uADPhysODBCBase;
  
  type
    TShowDataProc = procedure (ACliHandle: LongWord); stdcall;
    TShutdownProc = procedure; stdcall;
  
    TForm1 = class(TForm)
      ADConnection1: TADConnection;
      ADQuery1: TADQuery;
      ADGUIxWaitCursor1: TADGUIxWaitCursor;
      ADPhysMSAccessDriverLink1: TADPhysMSAccessDriverLink;
      DataSource1: TDataSource;
      DBGrid1: TDBGrid;
      Button1: TButton;
      Button2: TButton;
      Button3: TButton;
      procedure Button1Click(Sender: TObject);
      procedure Button3Click(Sender: TObject);
      procedure Button2Click(Sender: TObject);
    private
      FhDll: THandle;
      FpShowData: TShowDataProc;
      FpShutdown: TShutdownProc;
    end;
  
  var
    Form1: TForm1;
  
  implementation
  
  {$R *.dfm}
  
  uses
    uADStanUtil;
  
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    FhDll := LoadLibrary(PChar('Project2.dll'));
    if FhDll = 0 then
      raise Exception.Create(ADLastSystemErrorMsg);
    @FpShowData := GetProcAddress(FhDll, PChar('ShowData'));
    if not Assigned(FpShowData) then
      raise Exception.Create(ADLastSystemErrorMsg);
    @FpShutdown := GetProcAddress(FhDll, PChar('Shutdown'));
    if not Assigned(FpShutdown) then
      raise Exception.Create(ADLastSystemErrorMsg);
  end;
  
  procedure TForm1.Button3Click(Sender: TObject);
  begin
    FpShowData(ADConnection1.CliHandle);   &lt;&lt; Error is here
  end;
  
  procedure TForm1.Button2Click(Sender: TObject);
  begin
    FpShutdown();
    FreeLibrary(FhDll);
    FhDll := 0;
    @FpShowData := nil;
    @FpShutdown := nil;
  end;
  
  end.
  </code></pre>
  
  <p>Unit2 which is the dll</p>
  
  <pre><code>unit Unit2;
  
  interface
  
  uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, uADStanIntf, uADStanOption, uADStanDef, uADPhysIntf,
    uADDatSManager, uADStanParam, uADDAptIntf, Grids, DBGrids, DB,
    uADPhysManager, uADPhysMSAcc, uADGUIxFormsWait, uADCompGUIx, uADCompDataSet,
    uADCompClient, uADStanError, uADGUIxIntf, uADStanPool, uADStanAsync,
    uADDAptManager, uADPhysODBCBase;
  
  type
    TForm2 = class(TForm)
      ADConnection1: TADConnection;
      ADQuery1: TADQuery;
      ADGUIxWaitCursor1: TADGUIxWaitCursor;
      ADPhysMSAccessDriverLink1: TADPhysMSAccessDriverLink;
      DataSource1: TDataSource;
      DBGrid1: TDBGrid;
    public
      class procedure ShowData(ACliHandle: LongWord);
    end;
  
  var
    Form2: TForm2;
  
  implementation
  
  {$R *.dfm}
  
  { TForm2 }
  
  class procedure TForm2.ShowData(ACliHandle: LongWord);
  var
    oForm: TForm2;
  begin
    oForm := TForm2.Create(Application);
    oForm.ADConnection1.SharedCliHandle := ACliHandle;  &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;Error Here
    oForm.ADConnection1.Connected := True;
    oForm.ADQuery1.Active := True;
    oForm.Show;
  end;
  
  end.
  </code></pre>