地平线 发表于 2015-12-12 19:13:09

多时间点计划事件的提醒该如何执行?[已解决]

本帖最后由 地平线 于 2015-12-14 20:21 编辑

最近在写一个类似闹钟提醒的工具方便工作中使用,但由于涉及多个对象、多个事件、多个时间点,细节的具体执行找不到一个好方法。特来请教各位坛友!
具体例子如下:
对象1:事件A   提醒时间点:8:0012:0018:0024:00
         事件B   提醒时间点:22:00

对象2:事件A   提醒时间点:8:0012:0016:0022:0024:00
         事件B   提醒时间点:8:0012:0017:30
         事件C   提醒时间点:8:0017:30

对象3 ...
.
.
执行目的:到相应时间点即弹出提醒,如12:00提醒 “对象1:事件A。对象2:事件A,事件B。” ;17:30提醒“对象2:事件B,事件C。” 。

大体思路:先是录入界面,创建一个多标签页窗口,根据对象数量可增加或删除标签页,每个对象的标签页是多个事件和时间点的录入,根据事件的数量增加或删除分组组数。
               接着,录入的数据保存在配置文件里。
配置文件的结构初步设想:
CaseA = 8:00|12:00|18:00|24:00
CaseB = 22:00


CaseA = 8:00|12:00|16:00|22:00|24:00
CaseB = 8:00|12:00|17:30
CaseC = 8:00|17:30


CaseA = 8:00|12:00|16:00|22:00|24:00
CaseB = 8:00|12:00|17:30
CaseC = 8:00|17:30
CaseD = 8:00|18:00|24:00


...但是,执行提醒的时候,如何把多个不同时间点提取出来,并在该时间点提醒多个对象的多个事件?

afan 发表于 2015-12-12 20:59:53

界面略
先用Ini*函数读取配置文件成以下方便取值的数据,然后在需要的时间点在数据中正则匹配,简单可靠#include <Array.au3>
Local $sSource = _
                'Object1.CaseA = 8:00|12:00|18:00|24:00' & @CRLF & _
                'Object1.CaseB = 22:00' & @CRLF & _
                'Object2.CaseA = 8:00|12:00|16:00|22:00|24:00' & @CRLF & _
                'Object2.CaseB = 8:00|12:00|17:30' & @CRLF & _
                'Object2.CaseC = 8:00|17:30' & @CRLF & _
                'Object3.CaseA = 8:00|12:00|16:00|22:00|24:00' & @CRLF & _
                'Object3.CaseB = 8:00|12:00|17:30' & @CRLF & _
                'Object3.CaseC = 8:00|17:30' & @CRLF & _
                'Object3.CaseD = 8:00|18:00|24:00'
;~MsgBox(0, '源字符串', $sSource)
Local $sTime = InputBox('提醒测试', '请输入测试时间', '12:00')
If @Error Then Exit
Local $aSRE = StringRegExp($sSource, '(?m)(^.+?)\h*\=\h*.*?\D' & $sTime & '\D', 3)
If @Error Then Exit MsgBox(48, $sTime, '该时间点无提醒事件')
_ArrayDisplay($aSRE, UBound($aSRE))

地平线 发表于 2015-12-13 01:14:54

本帖最后由 地平线 于 2015-12-13 01:19 编辑

回复 2# afan
感谢A版的指点,可惜不懂正则,改天在电脑上再测试。
页: [1]
查看完整版本: 多时间点计划事件的提醒该如何执行?[已解决]