关于超想
本站导航
邮件列表
  首页 | 本站产品 | Delphi资料 | 免费资源 | 程序人生 | 软件工程 | 网站设计 | 推荐网站
你所在的位置 -> 主页 -> 超想软件 -> 编程资料 -> delphi -> 开发技巧 -> API相关 ->详细
相关内容  
 
 
在程序运行期设置QUERY控件的PARAMS
 
【新品推荐】

  详细内容
 

在DELPHI中处理时间
作者: 评价: 上站日期: 2001-05-09
内容说明:
来源:

  笔者在编写一个解除共享软件使用时间限制的小软件时,采用的原理是首先保存现在的时间,然后将系统时间设定为共享软件可运行的时间,再启动共享软件,最后在共享软件退出时再将系统时间恢复为原来保存的时间。但在调试程序的过程中发现了这样一个问题,由于在共享软件运行其间,时间已流逝,所以恢复原来保存的时间后就会导致系统时间滞后,滞后的时间为共享软件的运行时间。 

如何来解决这个问题呢?笔者经过摸索,采用在共享软件启动的同时启动一个定时器,用一个变量保存流逝的时间,在共享软件结束时定时器停止工作,然后将流逝的时间加到原来保存的时间上作为系统时间恢复,这样就彻底解决了软件运行导致系统时钟变慢的问题。为了能在方便其他程序使用,编写了一个用于处理事件的类,在此介绍如下,以便于大家在编写与时间有关的程序时参考,从中可了解如何保存现在时间、设定新时间、记录流逝时间、恢复系统时间的方法。 

代码如下: 

unit SystemTime;

interface

uses
Windows, Messages, SysUtils, Classes,
Graphics,Controls, Forms, Dialogs, StdCtrls,ExtCtrls;

type
  TSysTime = class(TObject)
private
//系统日期、时间
FStartDateTime : TDateTime;
// 定时器
FTimer : TTimer;
// 流逝时间变量
FElapsedTime : Integer;

procedure Timer(Sender: TObject);

protected

public
constructor Create; virtual;
destructor Destroy; override;
procedure SetNewTime(NewTime :TSystemTime);
procedure ResetTime;
end;

implementation

//构造器
constructor TSysTime.Create;

begin
//保存当前日期、时间
FStartDateTime := Now;
//生成定时器对象
FTimer := TTimer.Create(nil);
// 设定时钟间隔为一秒
FTimer.Interval := 1000;
//时钟事件
FTimer.OnTimer := Timer;
// 开始记时
FTimer.Enabled := True;
end;

//设定系统新时间
procedure TSysTime.SetNewTime(NewTime :
TSystemTime);
begin
SetLocalTime(NewTime);
end;

//流逝时间
procedure TSysTime.Timer(Sender: TObject);
begin
// 保存流逝的时间(以秒为单位),每秒加1
Inc(FElapsedTime);
end;

//恢复系统时钟
procedure TSysTime.ResetTime;

var
NewTime : TSystemTime;
tmTemp : Double;
dtTemp : TDateTime;

begin
//将流逝的时间转换为天数
tmTemp := FElapsedTime/86400;
//将流逝的时间加到原来的时间上
dtTemp := FStartDateTime + tmTemp;
//转换为Windows 32位时间格式
DateTimeToSystemTime(dtTemp, NewTime);
//设定时间
SetLocalTime(NewTime);
end;

//释放
destructor TSysTime.Destroy;
begin
//恢复系统时钟
ResetTime;
// 记时器停止
FTimer.Enabled := False;
// 释放时钟对象
FTimer.Free;
end;

end. 

 
你所在的位置 -> 主页 -> 超想软件 -> 编程资料 -> delphi -> 开发技巧 -> API相关 ->详细
  首页 | 本站产品 | Delphi资料 | 免费资源 | 程序人生 | 软件工程 | 网站设计 | 推荐网站
声明:本站内容除注明原创以外均从网上摘抄,如有侵权请指明。
  如果您对我们的网站有什么意见或者建议,请与我们联系
powered by 建站易上手- V2.0