Patrick, yes,
Unfortunately, the real solution is to recompile the vcl with the
fix. Because its a number of controls that are affected (not just
the age calculation).... such as display/modification of dob in a
grid etc.
What I will be doing is to replace a whole chunk of vcl code by the
process of intervention. I have deferred it for the holidays.
On 16 Dec 99 at 17:21, Patrick Dunford wrote:
> Has anyone else experienced problems with date/time calculations due to
> Delphi offsetting the date by 30/12/1899
>
> The situation is that I wish to calculate a person's current age which
> appeared to be simple: subtract their date of birth from the current date
> then decode into actual years.
>
> But Delphi insists on adding this offset to the date so I end up with a
> person having an age of 1901 years.
> (Delphi 3)
>
> Code below:
>
> function CurrentAge(DOB:TDateTime):integer; //Return years only
> var y,m,d:word;
> CDate:TDateTime;
> begin
> CDate:=Date-DOB;
> DecodeDate(CDate,y,m,d);
> Result:=y;
> end;
>
> The date subtraction is fine and in one example produces a result of 374
> days, just over 1 year, Delphi then makes this into year 1901 but by the
> calculation the actual number stored in the TDateTime is 1.0 something,
> which it adds 30/12/1899 to
>
> The best I have come up with is to subtract 1900 from the year but this will
> be 1 day out.
>
>
> ---------------------------------------------------------------------------
> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> Website: http://www.delphi.org.nz
>
Rohit
======================================================================
CFL - Computer Fanatics Ltd. 21 Barry's Point Road, AKL, New Zealand
PH (649) 489-2280
FX (649) 489-2290
email [EMAIL PROTECTED] or [EMAIL PROTECTED]
======================================================================
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz