|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"自動で時計合わせ"
インターネットで公開されているアメリカのタイムサーバーから時間を
取り込んで,自分のPCの時間を合わせるプログラム.
DayTimeだといちいち文字列をパースしないといけないので,TIME
プロトコルのほうが日付まで扱うのもかえって簡単です.
D4 Professionalに付属のTNMTimeコンポを使います.
・フォーム(DataModuleではだめ)にTNMTimeコンポを貼り付けてプロパティ
を設定し,ボタンのOnClickに下記コードを書き込み,あらかじめ
インターネットに接続したパソコンで実行して下さい.
see:
http://www.bldrdoc.gov/timefreq/service/nts.htm
---------------------------------------------------------------
NMTime1のproperty
Host : time-a.nist.gov ,time-b.nist.gov など.福岡大のはNTPだけ?
TimeOut : 5000
Port : 37 (default)
procedure TOptionForm.GetTimeStrBtnClick(Sender: TObject);
var
I: integer;
I6: Int64;
Y,M,D,H,Min,S,MS: Word;
DT: TDateTime;
ST: SYSTEMTIME;
begin
I := NMTime1.TimeInt; // access the server
I6 := 0;
Move(I,I6,SizeOf(Integer)); // use as unsigned 32bit integer
DT := I6 / (24 * 60 * 60) + 2; // plus leaps
DecodeDate(DT,Y,M,D);
DecodeTime(DT,H,Min,S,MS);
with ST do begin
wYear := Y;
wMonth := M;
// WORD wDayOfWeek;
wDay := D;
wHour := H;
wMinute := Min;
wSecond := S;
wMilliseconds := MS;
end;
SetSystemTime( ST ); // correct PC's clock
end;
TN(CQJ01721)
Original document by TN 氏 ID:(CQJ01721)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|