Bonjour,
Bon le problème en lui-même est tout simple, mais à mon avis il est important de bien situer le contexte, c'est pourquoi les explications pourraient être longue.

Je travaille actuellement sur un projet comprenant (pour la partie qui nous intéresse) :
1) Unité contenant la classe d'un personnage : Unité Personnage. (pas de form associé, par abus pour parler de la classe CPersonnage, je dirais dans l'unité Personnage).
2) Une fiche relative à la gestion de son équipement : fiche Equipment
Cette fiche n'est pas créée automatiquement dès l'ouverture du programme. Se référer à la suite pour voir ce que je fais.

3) Une fiche de gestion d'achat d'équipement : fiche BuyEquipment

Dans l'unité Personnage en section Private j'ai la variable fGils de type integer. En public j'ai ajouté ce code là pour y avoir accès de l'extérieur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Property Gils : Integer Read fGils Write fGils;
.
Dans la partie Uses de l'interface je déclare la fiche Equipment.
Dans cette unité il y a le code suivant qui permet d'ouvrir la fenetre d'équipement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
procedure CPersonnage.Equipment;
var Form : TfEquipment;
begin
 Form:=TfEquipment.Create(Nil);
 Form.LoadPlayerEquipment(fName,fGils,fListEquipment,fEquipment);
 Form.ShowModal;
 fEquipment:=Form.GetEquipment;
 Form.Free;
end;
En ce qui concerne Equipment et BuyEquipment il n'y a pas grand chose :
Dans Equipment, au Uses de l'implementation je déclare BuyEquipment.
Dans BuyEquipment, dans le Uses de l'interface je déclare Equipment.

Mon objectif est de pouvoir modifier la valeur de fGils à partir de BuyEquipment.
Donc moi je vois la chose comme ça mais cela ne fonctionne pas, voila pourquoi je viens vous voir. Voila comment moi je fais :
Dans Equipment, dans la classe de la form, en Private j'ajoute la variable fMoney de type integer. Dans la partie Public j'ajoute ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Property Money : Integer Read fMoney Write fMoney;
Dans BuyEquipment, dans la classe de la form, j'ajoute la variable fMoney de type integer. Dans l'évènement OnShow de la fenetre j'ajoute le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
fMoney:=fEquipment.Money;
Et c'est là mon problème, à l'éxécution du programme, a l'ouverture de la fenetre j'ai un beau Acces Violation.

Je suis d'accord la chose est complexe, si les explications ne sont aps suffisante et que vous avez besoin de ficheir pour mieux saisir la chose, faites signe.

Quoi qu'il en soit merci déjà de m'avoir lu jusqu'ici, je reste en attente de vote réponse.

Par avance merci,
Bleys


[Edit] : Si nécessaire, la fonction LoadPlayerEquipment de Equipment appelé par Personnage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
procedure TfEquipment.LoadPlayerEquipment(Name : String;Money : Integer; List : TStringList;aEquipment: TEquipment);
begin
Caption:='Équipement en cours de '+Name;
fListEquipment:=List;
fPlayerEquipment:=aEquipment;
fMoney:=Money;
LoadWeapon(fPlayerEquipment.Weapon);
LoadArmour(fPlayerEquipment.Armour);
LoadAccessory1(fPlayerEquipment.Accessory[1]);
LoadAccessory2(fPlayerEquipment.Accessory[2]);
ChangeColor(gbEquipment);
end;