delphi - 如何在 Lazarus Pascal 中使用 TTimeEdit?
问题描述
我需要自动将文件从一个目录复制到另一个目录(由用户设置,如 22:00)。我如何设置我的复制计划程序(每天直到手动停止)以在 TTimeEdit 中设置的时间开始?
这是我的代码:
var
ScheduleStart : TTime;
begin
Timer1.Enabled := false;
ScheduleStart := (AutoStartTime.Time);
if ScheduleStart > Now then Timer1.Enabled := true
else
begin
showmessage('Copying is started...');
end;
end;
有人可以帮我解决这个问题吗?
解决方案
我想您的代码在计时器(Timer1)的 OnTimer 事件处理程序中工作。我不知道这个计时器的间隔,可能是 1 秒。因此,在激活计时器后一秒钟后,将调用此事件处理程序,但您的第一行会禁用计时器。还有一条线可以再次启用计时器,但是当当前时间在 ScheduleStart 之前时,永远不会达到这一点。要解决此问题:删除“Timer1.Enabled := false”。这样,计时器会定期检查是否达到 ScheduleStart。当它是您必须停用计时器以防止一次又一次地触发您的副本。所以,我会改变你的代码如下:
// Code to start the timer
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := true;
end;
// Code executed regularly while the timer it enabled.
procedure TForm1.Timer1Timer(Sender: TObject);
var
ScheduleStart : TTime;
begin
ScheduleStart := AutoStartTime.Time;
if Now() >= ScheduleStart then
begin
// strop triggering the event any more
Timer1.Enabled := false;
// Execute the process
ShowMessage('Copying has started...');
end;
end;
推荐阅读
- elasticsearch - 将数据从 Amazon S3 重新索引到 Elasticsearch
- wsdl - 使用 gsoap 编译时出错
- angular - Angular5:路由的条件模块
- excel - Python合并多个Excel工作表以形成汇总表
- python - python中字符串的特殊正则表达式
- algorithm - 您如何获得序列比对算法的复杂性?
- ios - 根据附加值添加值
- tfs - 在不同的团队项目上构建和发布
- python - 从一个括号内包含多个值集的单个值创建设置值列表
- regex - 正则表达式 - “搜索直到它不匹配 ;\d+\;\d+\.\d+;\W\d+\.\d+ 但排除之前的任何内容”