Bonjour,

Je voudrais créer dynamiquement un objet à partir de son nom de classe mais j'ai systématiquement une violation d'accès lors de l'appel à "create".
Pouvez-vous me donner votre avis sur cet exemple basique?
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
34
35
36
37
38
39
40
41
42
43
44
45
 
program Project5;
{$APPTYPE CONSOLE}
{$R *.res}
uses
  System.SysUtils,system.Classes;
 
  type TMaClasse=class(Tpersistent)
   public
      constructor create;virtual;
  end;
 
  type TClasse1=class(TMaClasse)
  private
      fprop1:string;
     public
      constructor create;override;
      property prop1:string read fProp1 write fProp1;
  end;
 
  constructor TMaClasse.create;
  begin
     inherited create;
  end;
 
  constructor TClasse1.create;
  begin
      inherited create;
     prop1:='ok';
  end;
 
  var   classe1:TClasse1;
 
begin
  try
    RegisterClasses ([TMaClasse,TClasse1]);
    classe1:=TClasse1(getclass('TClasse1')).Create;  //Violation d'accès lors de la création de l'instance
    writeln(classe1.prop1);
    classe1.free;
    readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Remarque: Si j'instancie un objet de la classe de base (TMaCLasse), ça fonctionne