在程序启动的时候,自动修改客户机的时间与服务器时间保持一致,如何实现?
请给出代码!谢谢
请给出代码!谢谢
解决方案 »
- delphi嵌入汇编语言出错
- 问下大家,我一个从主界面调用子窗体的MediaPlayer1,和子窗体自己调用MediaPlayer1怎么不是现一个
- 请问初级程序员主要考什么内容的?
- 以前提问过,没得到合理的解释,今天再给100分
- 各位大哥,请出山相救呀,谢谢!
- richedit如何不换行增加字符?
- 如何得到服务器windows或Systems的安装路径?
- 关于Word或EXCEL文件的读写及应用
- DLL封装Frame
- 我想问一下,软件如何作到反盗版,注册码怎样加上去的,测试版应该采取什么措施,数据库连接个数的控制有效吗
- DELPHI 7 数据库开发经验交流
- 祝贺firetoucher成为DELPHI版的大版主
也可以用Socket。方法多多啊。
{***************************************************************
*
* Project : TimeDemo
* Unit Name: Main
* Purpose : Demonstrates a DateTime client getting current date and time from remote DateTimeServer
* Date : 21/01/2001 - 12:55:37
* History :
*
****************************************************************}unit Main;// A list of time servers is available at:
// http://www.eecis.udel.edu/~mills/ntp/servers.htmlinterfaceuses
{$IFDEF Linux}
QGraphics, QControls, QForms, QDialogs, QStdCtrls,Classes,
{$ELSE}
windows, messages, graphics, controls, forms, dialogs, stdctrls,
{$ENDIF}
SysUtils, Classes, IdComponent, IdTCPConnection, IdTCPClient, IdTime,
IdBaseComponent, ExtCtrls,Inifiles;type
TfrmTimeClients = class(TForm)
lblTimeServer: TLabel;
IdClientTime: TIdTime;
edtTimeResult: TEdit;
Label1: TLabel;
btnGetTime: TButton;
cmboTimeServer: TComboBox;
Timer1: TTimer;
Button1: TButton;
procedure btnGetTimeClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
procedure GetTimerServer;
procedure ReadTimerServer;
procedure WriteTimerServer;
Procedure SynchLocalTime;
public
ServerIP,DefaultName:string;
Flag:Boolean;
SystemTime:TSystemTime;
LocalTime,ServerTime:TDateTime;
end;Const FileName='TIPS.ini';
var
frmTimeClients: TfrmTimeClients;implementation
{$IFDEF MSWINDOWS}{$R *.dfm}{$ELSE}{$R *.xfm}{$ENDIF}// No real code required - all functionality built into component !
procedure TfrmTimeClients.btnGetTimeClick(Sender: TObject);
begin if not Flag then ReadTimerServer;
if ServerIP <> '' then IdClientTime.Host := ServerIP
else
begin
ShowMessage('Please deploy yours configure !');
Exit;
end;
{ After setting Host, this is all you have to get the time from a time
server. We do the rest. }
try
edtTimeResult.Text := DateTimeToStr ( IdClientTime.DateTime );
ServerTime:=IdClientTime.DateTime;
SynchLocalTime;
Timer1.Enabled :=True;
Flag:=True;
except
on E: Exception do
begin
Timer1.Enabled :=False;
Flag:=False;
ShowMessage('Checking Timer Server!');
end;
end;
end;procedure TfrmTimeClients.GetTimerServer;
var f:TIniFile;
s:TStringList;
begin
s:=TStringList.Create; f:=TIniFile.Create(ExtractFilePath(Application.ExeName)+FileName);
f.ReadSection('Server',s);
DefaultName:=f.ReadString('DEFAULT','Server','127.0.0.1');
ServerIP:=F.ReadString('Server',DefaultName,''); Flag:=F.ReadBool('auto','autoSync',False);
if flag then
begin
Timer1.Interval:=F.ReadInteger('Timer','Interval',5000);
Timer1.Enabled:=Flag;
end;
cmboTimeServer.Items.Clear;
cmboTimeServer.Text:=DefaultName;
cmboTimeServer.Items:=s;
s.Free;
f.Free;
end;procedure TfrmTimeClients.FormCreate(Sender: TObject);
begin
GetTimerServer;
end;procedure TfrmTimeClients.ReadTimerServer;
var f:TIniFile;
s:TStringList;
begin
s:=TStringList.Create ;
F:=TIniFile.Create(ExtractFilePath(Application.ExeName)+FileName);
ServerIP:=F.ReadString('Server',cmboTimeServer.Text,'');
F.Free;end;procedure TfrmTimeClients.WriteTimerServer;
var F:TIniFile;
begin
F:=TIniFile.Create(ExtractFilePath(Application.ExeName)+FileName);
F.WriteString('DEFAULT','Server',cmboTimeServer.Text);
{ if Timer1.Enabled then
begin
f.WriteBool('auto','autoSync',True);
end
else
f.WriteBool('auto','autoSync',False);
}
end;procedure TfrmTimeClients.Timer1Timer(Sender: TObject);
begin
btnGetTime.Click();
end;procedure TfrmTimeClients.SynchLocalTime;
begin//LocalTime:=StrtoDatetime(edtTimeResult.Text);
DateTimetoSystemTime(ServerTime,SystemTime);
setLocalTime(SystemTime);
GetLocalTIme(SystemTime);
LocalTime:=SystemtimetoDatetime(SystemTIme);
//label2.Caption :=DatetimetoStr(LocalTime);
end;procedure TfrmTimeClients.Button1Click(Sender: TObject);
begin
SynchLocalTime;
end;procedure TfrmTimeClients.FormDestroy(Sender: TObject);
begin
WriteTimerServer;
end;end.