olegy123 писал(а):Все помогли. 
думаю во что паковать время.. Double нравится.
TDateTime:
- Код: Выделить всё
-   TDateTime           = type Double;
 TDate               = type TDateTime;
 TTime               = type TDateTime;
 
Лазарус сам упаковывает дату и время в Double.
См. функции:
Function TryEncodeDate(Year,Month,Day : Word; Out Date : TDateTime) : Boolean;
function TryEncodeTime(Hour, Min, Sec, MSec:word; Out Time : TDateTime) : boolean;
- Код: Выделить всё
- Function TryEncodeDate(Year,Month,Day : Word; Out Date : TDateTime) : Boolean;
 
 var
 c, ya: cardinal;
 begin
 Result:=(Year>0) and (Year<10000) and
 (Month in [1..12]) and
 (Day>0) and (Day<=MonthDays[IsleapYear(Year),Month]);
 If Result then
 begin
 if month > 2 then
 Dec(Month,3)
 else
 begin
 Inc(Month,9);
 Dec(Year);
 end;
 c:= Year DIV 100;
 ya:= Year - 100*c;
 Date := (146097*c) SHR 2 + (1461*ya) SHR 2 + (153*cardinal(Month)+2) DIV 5 + cardinal(Day);
 // Note that this line can't be part of the line above, since TDateTime is
 // signed and c and ya are not
 Date := Date - 693900;
 end
 end;
 
 function TryEncodeTime(Hour, Min, Sec, MSec:word; Out Time : TDateTime) : boolean;
 
 begin
 Result:=(Hour<24) and (Min<60) and (Sec<60) and (MSec<1000);
 If Result then
 Time:=TDateTime(cardinal(Hour)*3600000+cardinal(Min)*60000+cardinal(Sec)*1000+MSec)/MSecsPerDay;
 end;