罗湖山庄 » 日志 » 做个闹钟程序叫阿洛起床
做个闹钟程序叫阿洛起床
阿洛 发表于 2008-10-08 16:55:55
好吧,昨晚的运气非常非常令人觉得诧异。嗯,先是父母出差不在家;然后临睡时发现小灵通坏了,无法开机;在然后一检查闹钟……也坏了,无法定时。真绝……今天1、2节有课,我这可怎么起床啊………………
于是,解决之道是打开Delphi,做一个闹钟程序,不关机,定时让程序叫我起床……一晚上醒来3、4次看时间到了没,唉唉,我何苦不自信我的程序呢,今儿早上可不是准点把我闹醒了嘛……
代码如下,简单的功能而已,窗体没处理,是个傻瓜化的普通窗体。
功能么,只是在固定的时间播放音乐。播放音乐的代码么,首先在uses 里加上MMSystem,然后么,真正播放的代码只一句:PlaySound('c:\白蓮還真.wav', 0,SND_ASYNC++SND_LOOP); //执行播放音乐的语句
哎呀呀。我放了个定时器,每1000毫秒检查一次系统时间,如果到了该起床的时间,就播放音乐并且定时器失效。定时器的代码如下:
procedure TForm1.Timer1Timer(Sender: TObject);
var
wakeupTime: TDateTime;
begin
wakeupTime:=strtodatetime('2008-10-8 06:20:30');
if (date +time) >= wakeupTime then //wakeupTime为起床的时间.为TDateTime类型
begin
PlaySound('c:\白蓮還真.wav', 0,SND_ASYNC++SND_LOOP); //执行播放音乐的语句,并且循环播放,播到我起床关闭程序为止= =
timer1.Enabled :=false;//定时器失效
end;
end;
这里要稍提到的是一开始我犯的错误。就是只判断当前时间,没判断当前日期。没错!各位看到的没错,我设置的是早上06:20:30(早上6点20分30秒……嗯,30秒……),如果没有设置日期的判断的话,程序一比较,哦,当前已经超过了早上6点20分30秒了嘛,于是起床起床起床~~白莲还真放起来~~~放起来放起来~~~(米错!我用素素的配乐来当起床钟……)…………所,所以,程序必须要同时判断日期与时间……这才有了这两句的设置:
wakeupTime:=strtodatetime('2008-10-8 06:20:30');//设置起床的时间为2008年10月8早上6点20分30分,strtodatetime函数,是将字符型的时间参数(str)转换成程序能识别的日期时间型参数(Tdatetime)
if (date +time) >= wakeupTime then //wakeupTime为起床的时间.为TDateTime类型
唉唉…………有这样那样的错,所以这个简单的只有几句的程序,硬是做了半小时……劣者无能啊……这几句代码,发上来给编程的好友们一哂。
- » 让你人生少走弯路的十个忠告
- » 自己写游戏
- » 读写文件编程
- » 胡喜:我是如何从菜鸟做到架构师的
- » 意外的收获
