Bonjour,
J'ai un problème très simple dont voici un résumé :
J'ai deux unités : "UnitSub" et "UnitMain".
"UnitMain" possède une section d'initialisation créant un objet globale utilisé par un objet globale de "UnitSub" lui-même créé dans la section initialisation de cette dernière unité. Suis-je clair ?
Pour résumer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Unit UnitMain; initialization MainObj:= TMainObj.Create; finalization MainObj.Free;
Pour résumer :
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 Unit UnitSub; interface uses UnitMain; constructor TSubObj.Create; begin FData:= MainObj.Data; end; initialization SubObj:= TSubObj.Create; finalization SubObj.Free;
Hors à l'exécution de mon programme je vérifie que la section initialization de "UnitSub" est appelé avant la section initialization de "UnitMain". Cela provoque donc une violation d'accès.
Pourquoi ne suis-je pas assuré que UnitMain soit initialisée avant puisqu'elle apparait dans la section "interface/uses" de mon unité "UnitSub" ??...
Cela ne me semble pas "normal" et m'ennuie beaucoup car remet en cause la logique que je pensais être la bonne jusqu'à présent, et du même coup l'intégrité de mes sections "initialization" et "finalization" de bon nombre de mes unités...
Partager