Советы по Delphi. Версия 1.4.3 от 1.1.2001 (Озеров) - страница 7

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;