Здравствуйте!
Подскажите пожалуйста каким образом из Лазаруса можно установить системную дату-время?
Lazarus 0.9.26, FPC 2.2.2
XUbuntu (Linux 2.6.24-23-generic).
			
		Модератор: Модераторы
uses
   BaseUnix;
var tz: timezone;
    tv: timeval;
begin
  tz.tz_minuteswest := -2;//смещение на запад от Гринвича
  tz.tz_dsttime := 0;//летнее время
  tv.tv_sec := 60; //секунды от 00:00, 1 января 1970
  tv.tv_usec := 00;//милисекунды
  fpsettimeofday(@tv, @tz);
//  fpgettimeofday(@tv, @tz); //взять системное время, полезно поизучать, как нужно инииализировать переменные
//Весь инструментарий для обработки этого удовольствия в модуле "dateutils" - не нужно морочить голову с вычислениями. Там преобразования туда-сюда и обратно.
end.

uses WinTypes, SysUtils, ShellApi ;
function SetDate(tDati: TDateTime): Boolean;
var
   tSetDati: TDateTime;
   vDatiBias: Variant;
   tTZI: TTimeZoneInformation;
   tST: TSystemTime;
   H,M,S,Ms : word ;
begin
 GetTimeZoneInformation(tTZI);
 vDatiBias := tTZI.Bias / 1440;
 DecodeTime(time,H,M,S,Ms) ;
 tSetDati := tDati + vDatiBias + encodetime(H,M,S,Ms) ;
 with tST do
  begin
   wYear := 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;
 Result := SetSystemTime(tST);
end;


 Посмотрел, действительно шедевр.
  Посмотрел, действительно шедевр.  . Откуда брал и что изменял уже не помню - эта процедура работала еще под 95-ой виндой.
 . Откуда брал и что изменял уже не помню - эта процедура работала еще под 95-ой виндой.
(Sender: TObject);
var
  date_:TDateTime;
  win_time: tsystemtime;
begin
   date_:=StrToDate('01.01.2007');
   DateTimeToSystemTime(date_,win_time);
   SetSystemTime(win_time);
end; Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1