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?
Remarque: Si j'instancie un objet de la classe de base (TMaCLasse), ça fonctionne
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.
Partager