Création dynamique d'une instance à partir du nom de la classe
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:
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