library Arret;

{ Remarque importante concernant la gestion de mémoire de DLL : ShareMem doit
  être la première unité de la clause USES de votre bibliothèque ET de votre projet 
  (sélectionnez Projet-Voir source) si votre DLL exporte des procédures ou des
  fonctions qui passent des chaînes en tant que paramètres ou résultats de fonction.
  Cela s'applique à toutes les chaînes passées de et vers votre DLL --même celles
  qui sont imbriquées dans des enregistrements et classes. ShareMem est l'unité 
  d'interface pour le gestionnaire de mémoire partagée BORLNDMM.DLL, qui doit
  être déployé avec vos DLL. Pour éviter d'utiliser BORLNDMM.DLL, passez les 
  informations de chaînes avec des paramètres PChar ou ShortString. }

uses
  windows,
  SysUtils,
  Classes,
  Forms,
  XMLClassesEchanges in '..\..\XMLClassesEchanges.pas',
  UArret in 'UArret.pas' {ArretForm},
  UGlobal in '..\..\..\UGlobal.pas';

{$R *.res}

var dllApplication : TApplication;

procedure myDllProc(Reason: Integer);
begin
  if Reason = DLL_PROCESS_DETACH then
    { DLL is unloading. Restore the Application pointer. }
  begin
    if Assigned(dllApplication) then
    begin
      Application := dllApplication;
      dllApplication := nil;
    end;
  end;
end;

procedure LancerIHM(mainApplication : TApplication);
begin

  if not Assigned(dllApplication) then
  begin
    dllApplication := Application;
    Application := mainApplication;
  end;

  ArretForm := TArretForm.create(Application);
  ArretForm.DefaultMonitor := dmMainForm;
  ArretForm.ShowModal;
  ArretForm.Free;
end;

exports LancerIHM;

begin
  DllProc := @myDllProc;
end.
