> if (nMonth = 2) and kcIsLeapYear(nYear) then Inc(Result);
>end;
>{***************************************************************************}
>function kcWeekOfYear(dDate: TDateTime): Integer;
>var
> X, nDayCount: Integer;nMonth, nDay, nYear: Word;
>begin
> nDayCount := 0;
> deCodeDate(dDate, nYear, nMonth, nDay);
> For X := 1 to (nMonth - 1) do nDayCount := nDayCount + kcMonthDays(X, nYear);
> nDayCount := nDayCount + nDay;
> Result := ((nDayCount div 7) + 1);
>end;
Delphi 1
…я не знаю, когда вы выполняете TimeTaken… Вы делали какую-нибудь паузу перед запуском TimeTaken после выполнения SetTimeStart? Если не делали, то удивительно, что tt=Now… Я пробовал ваш код с несколькими незначительными изменениями… и я всегда получал разницу между Now и TimeStart. Но я объявляю tt как TDateTime, а не как Double, и использую событие OnTimer для запуска процедуры TimeTaken. Вы можете проверить это, запустив пример, приведенный ниже.
>{*******************************************************************
>ФАЙЛ : TIMEEX.PAS
>ПРИМЕЧАНИЕ : Создайте форму, содержащую 1 TTimer и 6 TLabel. Установите событие OnTimer у TTimer на TForm.Timer1.Timer
>********************************************************************}
>unit Time;
>interface
>uses
> SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs, ExtCtrls, StdCtrls;
>type
> TForm1 = class(TForm)
> Timer1: TTimer;
> Label1: TLabel; {Caption : 'Старт :'}
> Label2: TLabel;
> Label3: TLabel; {Caption : 'Время : '}
> Label4: TLabel;
> Label5: TLabel; {Caption : 'Истекшее время:'}
> Label6: TLabel;
> procedure FormCreate(Sender: TObject);
> procedure Timer1Timer(Sender: TObject);
> private { Private declarations }
> TimeStart : TDateTime;
> public { Public declarations }
> end;
>var
> Form1: TForm1;
>implementation
> {$R *.DFM}
>procedure TForm1.FormCreate(Sender: TObject);
>begin
> TimeStart := Now;
> Label2.Caption := TimeToStr(Now);
>end;
>procedure TForm1.Timer1Timer(Sender: TObject);
>var
> tt : TDateTime;
>begin
> Label4.Caption := TimeToStr(Now);
> tt:= Now - TimeStart;
> Label6.Caption:= TimeToStr(tt);
>end;
>end.
Delphi 1
…я нашел Time24Hour в файлах помощи, как вы и советовали. Но…
вот код для EncodeTime в SysUtils.Pas file:
>function DoEncodeTime(Hour, Min, Sec, MSec: Word; var Time: TDateTime): Boolean;
>begin
> Result := False;
> if (Hour < 24) and (Min < 60) and (Sec < 60) and (MSec < 1000) then begin
>Time := (LongMul(Hour * 60 + Min, 60000) + Sec * 1000 + MSec) / MSecsPerDay;
> Result := True;
> end;
>end;
>function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;