Comment utiliser une classe d'un paquet chargé dynamiquement ?

Je ne connaissais pas du tout l'utilisation dynamique des paquets.
J'ai donc regardé ce tutoriel : http://sjrd.developpez.com/delphi/tutoriel/compoplugin/ (Surtout les chapitres I - B, I - C, I - E)

Comme conseillé dans le chapitre 'I - E', j'ai créé une classe ancêtre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
  TClassTestAncetre = class(TComponent)
    public
      procedure Test;   virtual;   abstract;
      function GetDate: String;   virtual;   abstract;
  end;
Puis, la classe du paquet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  TClassTest = class(TClassTestAncetre)
    public
      procedure Test;   override;
      function GetDate: String;   override;
  end;
 
...
 
procedure TClassTest.Test;
begin
  ShowMessage('Test');
end;
 
function TClassTest.GetDate: String;
begin
  Result := FormatDateTime('dd/mm/yyyy', Now);
end;
 
...
 
initialization
  RegisterClass(TClassTest);
finalization
  UnregisterClass(TClassTest);
end.
Et enfin, mon application faisant appel au paquet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
procedure TForm1.BtnClasseTestClick(Sender: TObject);
var
  Module: HMODULE;
  Classe: TPersistentClass;
  Instance: TClassTestAncetre;
//  Instance: TClassTest;
begin
  Module := LoadPackage(NOM_PAQUET);
  if Module <> 0 then
  begin
    try
      Classe := GetClass('TClassTest');
      if Assigned(Classe) then
      begin
        if Classe.InheritsFrom(TClassTestAncetre) then
        begin
          Instance := TClassTestAncetre(Classe).Create(nil);          // <<-- Plante ici !
          try
            Instance.Test;
          finally
            Instance.Free;
          end;
        end
        else
          ShowMessage('not Classe.InheritsFrom(TClassTestAncetre) !');
      end
      else
        ShowMessage('not Assigned(Classe) !');
    finally
      UnloadPackage(Module);
    end;
  end;
end;
Et j'obtiens une violation d'accès sur la création de l'objet Instance.
Que ce soit une variable de type TClassTest ou TClassTestAncetre n'y change rien.

Qu'est ce que j'ai raté ?