mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-14 11:09:41 +02:00
* now correct proc patched
This commit is contained in:
parent
ad5224b020
commit
67c3e6c17a
@ -96,25 +96,23 @@ end ;
|
|||||||
Function TryEncodeDate(Year,Month,Day : Word; Var Date : TDateTime) : Boolean;
|
Function TryEncodeDate(Year,Month,Day : Word; Var Date : TDateTime) : Boolean;
|
||||||
|
|
||||||
var
|
var
|
||||||
lm,ly, c, ya: cardinal;
|
c, ya: cardinal;
|
||||||
begin
|
begin
|
||||||
Result:=(Year>0) and (Year<10000) and
|
Result:=(Year>0) and (Year<10000) and
|
||||||
(Month in [1..12]) and
|
(Month in [1..12]) and
|
||||||
(Day>0) and (Day<=MonthDays[IsleapYear(Year),Month]);
|
(Day>0) and (Day<=MonthDays[IsleapYear(Year),Month]);
|
||||||
If Result then
|
If Result then
|
||||||
begin
|
begin
|
||||||
lm:=month;
|
if month > 2 then
|
||||||
ly:=year;
|
Dec(Month,3)
|
||||||
if lm > 2 then
|
|
||||||
Dec(lm,3)
|
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
Inc(lm,9);
|
Inc(Month,9);
|
||||||
Dec(ly);
|
Dec(Year);
|
||||||
end;
|
end;
|
||||||
c:= ly DIV 100;
|
c:= Year DIV 100;
|
||||||
ya:= ly - 100*c;
|
ya:= Year - 100*c;
|
||||||
Date := (146097*c) SHR 2 + (1461*ya) SHR 2 + (153*cardinal(lm)+2) DIV 5 + cardinal(Day) - 693900;
|
Date := (146097*c) SHR 2 + (1461*ya) SHR 2 + (153*cardinal(Month)+2) DIV 5 + cardinal(Day) - 693900;
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -154,24 +152,27 @@ end;
|
|||||||
|
|
||||||
procedure DecodeDate(Date: TDateTime; var Year, Month, Day: word);
|
procedure DecodeDate(Date: TDateTime; var Year, Month, Day: word);
|
||||||
var
|
var
|
||||||
j : cardinal;
|
ly,ld,lm,j : cardinal;
|
||||||
begin
|
begin
|
||||||
j := pred((Trunc(System.Int(Date)) + 693900) SHL 2);
|
j := pred((Trunc(System.Int(Date)) + 693900) SHL 2);
|
||||||
Year:= j DIV 146097;
|
ly:= j DIV 146097;
|
||||||
j:= j - 146097 * cardinal(Year);
|
j:= j - 146097 * cardinal(ly);
|
||||||
Day := j SHR 2;
|
ld := j SHR 2;
|
||||||
j:=(Day SHL 2 + 3) DIV 1461;
|
j:=(ld SHL 2 + 3) DIV 1461;
|
||||||
Day:= (cardinal(Day) SHL 2 + 7 - 1461*j) SHR 2;
|
ld:= (cardinal(ld) SHL 2 + 7 - 1461*j) SHR 2;
|
||||||
Month:=(5 * Day-3) DIV 153;
|
lm:=(5 * ld-3) DIV 153;
|
||||||
Day:= (5 * Day +2 - 153*Month) DIV 5;
|
ld:= (5 * ld +2 - 153*lm) DIV 5;
|
||||||
Year:= 100 * cardinal(Year) + j;
|
ly:= 100 * cardinal(ly) + j;
|
||||||
if Month < 10 then
|
if lm < 10 then
|
||||||
inc(Month,3)
|
inc(lm,3)
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
dec(Month,9);
|
dec(lm,9);
|
||||||
inc(Year);
|
inc(ly);
|
||||||
end;
|
end;
|
||||||
|
year:=ly;
|
||||||
|
month:=lm;
|
||||||
|
day:=ld;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -739,7 +740,10 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.4 2004-11-05 12:10:04 marco
|
Revision 1.5 2004-11-05 13:02:21 marco
|
||||||
|
* now correct proc patched
|
||||||
|
|
||||||
|
Revision 1.4 2004/11/05 12:10:04 marco
|
||||||
* fix for 3357, introducing some local vars.
|
* fix for 3357, introducing some local vars.
|
||||||
|
|
||||||
Revision 1.3 2004/05/02 13:40:55 marco
|
Revision 1.3 2004/05/02 13:40:55 marco
|
||||||
|
Loading…
Reference in New Issue
Block a user