Вот правильное решение:
//************************************************************************* // Функция (раздел Public) SetPCSystemTime изменяет системную дату и время. // Параметр(ы) : tDati Новая дата и время // Возвращаемые значения: True - успешное завершение // False - метод несработал //************************************************************************* function SetPCSystemTime(tDati: TDateTime): Boolean; var tSetDati: TDateTime;vDatiBias: Variant;tTZI: TTimeZoneInformation;tST: TSystemTime;begin GetTimeZoneInformation(tTZI);vDatiBias := tTZI.Bias / 1440;tSetDati := tDati + vDatiBias;with tST dobeginwYear := StrToInt(FormatDateTime('yyyy', tSetDati));wMonth := StrToInt(FormatDateTime('mm', tSetDati));wDay := StrToInt(FormatDateTime('dd', tSetDati));wHour := StrToInt(FormatDateTime('hh', tSetDati));wMinute := StrToInt(FormatDateTime('nn', tSetDati));wSecond := StrToInt(FormatDateTime('ss', tSetDati));wMilliseconds := 0;end;SetPCSystemTime := SetSystemTime(tST);end; |
добавляет:
Для изменения системного времени используется сложный спобой (через строки).
DateTimeToSystemTime(tSetDati,Tst); |
- работает быстрее и код короче [000017]