程序启动时取得当前系统时间保存在一个全局变量 X 中,
放入一个 timer 控件, 在其中不断取当前的系统时间 Y,
然后与 X 比较,如果 Y - X = 20 或 30 就发邮件...

解决方案 »

  1.   

    下面给一个发邮件的代码:(使用 nmsmtp 控件)procedure TFMmail.Button1Click(Sender: TObject);
    begin
    NMSMTP1.PostMessage.FromName:='姓名';//在邮件中显示的发件人姓名
    NMSMTP1.UserID:='邮件帐号';//如信箱地址为[email protected],则填入none
    NMSMTP1.PostMessage.FromAddress:='发件地址';
    NMSMTP1.PostMessage.ReplyTo:='回复地址';
    NMSMTP1.Host:='pop3服务器地址';//如163填入:pop.163.net
    NMSMTP1.PostMessage.ToAddress.Text:='对方邮箱地址';
    NMSMTP1.PostMessage.Subject:='主题';
    NMSMTP1.PostMessage.Attachments.AddStrings(Listbox1.Items);//附件文件列表
    NMSMTP1.PostMessage.LocalProgram:='xxx';//发邮件的应用程序名
    NMSMTP1.PostMessage.Body.Assign(memo1.Lines);//信件内容
    if not NMSMTP1.Connected then
    NMSMTP1.Connect;
    if NMSMTP1.Connected then
    begin
    NMSMTP1.SendMail;
    NMSMTP1.Disconnect;
    end;
    end;
      

  2.   

    timer.enable:=FALSE; //关闭计时器
    timer.inteval:=1000*5//设定计时器的步长为5秒。单位是毫秒
    timer.enable:=TRUE;
    procedure timer.ontimer(sender:tobject) //当时间到就会响应此过程,你可以把你地想要做的事情放在这里面,发信什么的随你。当然也可以timer.enable:=FALSE;
      

  3.   

    用gettickcount函数,
    var ltimer:integer;
    开始先记录一个时间ltimer:=gettickcount
    然后判断
      while ((gettickcount-ltimer)/1000<3) do begin
        //do something
      end;
    就可以了!