Bonjour à tous,
A des fins de formation totalement personnelle, je m’entraîne a créer une classe pour manipuler des dates.
Je ne la dérive pas de TDate ou TDateTime, c'est simplement un objet.
Il y a une procédure pour lui attribuer une date qui sert de base, et a partir de la, j'essaie de récupérer jour mois année, etc... Bref, un petit exercice pour me familiariser avec le classes.
J'arrive sans problème à récupérer les propriétés, avec des getters, mais lorsque j'essaie de changer une propriété, j'obtiens des stackoverflow.
par exemple, le code ci-dessous:
avec le getter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 type TCustomDate = class private WorkingDate : TDate; function GetMonth : word; procedure SetMonth(Value: word); published property Month : word read GetMonth write SetMonth;
et le setter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function TCustomDate.GetMonth : word; begin GetMonth := myMonth ; end;
Donc la propriété Month obtient très bien la valeur myMonth (initialisée par ailleurs), mais si je veux changer cette propriété (par exemple myObject.Month:=myObject.Month-1), j'obtiens un stackoverflow, et je ne comprends pas pourquoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TCustomDate.SetMonth(Value: word) ; begin Month := Value ; end;
Pouvez-vous m'éclairer, je vous en prie?
Lazarus 1.0.10 win32
Partager