Bonjour j'ai créé un type de classe permettant l'utilisation de la duplication pour faire un commit et rollback de ma classe de configuration lorsque j'opère une premier fois, tout fonctionne parfaitement, hors un second commit me génère.
voici les déclarations de ma classe :
et la code incriminé :
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 private { Déclarations privées } { Paramtres de configurations } fparametres : TParamConfigSNMP; fdebug_mode : boolean; fOnTrace : TonTraceEvent; fOnError : TonErrorEvent; { Configuration courrante } class var fConfigModuleSNMP : TConfigModuleSNMP; { Ancienne configuration } class var foldfConfigModuleSNMP : TConfigModuleSNMP; { Evénement lié à l'envoi d'un message de trace } class procedure doTrace ( _message_trace : String ); { Evénement lié à une erreur système } class procedure doError ( _unite, _Proc, _Info: String ); { Renvoi d'un message dans le sorti de debogage standard } class procedure DebugMessage ( _message : String ); public { Constructeur } constructor Create; {Destructeur } destructor Destroy;override; { Renvoie une instance de la configuration } class function getInstanceOf:TConfigModuleSNMP; { Mis à jour de la configuration courrante } class procedure Commit; { Retour à la configuration d'orgine } class procedure Rollback; { Finalisation de l'enregistrement de la configuration (déchargement) } class procedure Finaliser; { Initialisation de la lecture de la configuration (Chargement) } class procedure Initialiser;
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 begin try // Ne fonctionne qu'une seul fois if assigned(foldfConfigModuleSNMP.fparametres) then FreeAndNil(foldfConfigModuleSNMP.fparametres); // foldfConfigModuleSNMP.fparametres.Destroy; foldfConfigModuleSNMP.fparametres := fConfigModuleSNMP.fparametres.Clone; SauvegarderIni; except on E: Exception do doError(STR_UNITE,STR_PROC,E.Message); end;
Partager