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:

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;
avec le getter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
function TCustomDate.GetMonth : word;
  begin
    GetMonth := myMonth ;
  end;
et le setter

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
procedure TCustomDate.SetMonth(Value: word) ;
  begin
    Month := Value ;
  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.
Pouvez-vous m'éclairer, je vous en prie?

Lazarus 1.0.10 win32