我用两个edit
一个获取当前时间
edit1.Text:=TimeToStr(now);
获取的时间是  16:34:02我怎么判断edit2的值和edit1的值相同 然后关机?if
edit2.Text = edit1.Text then   //这样不执行关机命令
begin
 ShellExecute(0,'open','shutdown.exe',' -f -s -t 0',nil,SW_HIDE);
end
我把timer控件的interval的值设置为1000   1秒走动一次  不影响吧?
只是想用这种简单的方法实现关机功能
谁可以帮我改改?
谢谢

解决方案 »

  1.   

    上次不是问过一次了吗?
    比较的时候再转回time形式比较不行吗?
      

  2.   

    if
    strtodatetime(edit1.text)=strtodatetime(edit2.text) then
    begin
    ShellExecute(0,'open','shutdown.exe',' -f -s -t 0',nil,SW_HIDE); 
    end这样也错了  郁闷 
    还是不能关机 没反应 
      

  3.   

    那用format固定格式,再转为integer比较试试
      

  4.   

    先不说解决问题,先说改变思路。edit1.text和edit2.text都是从怎样运算得来的?何苦再strtodatetime,直接比较原始的时间值就行
      

  5.   

    直接用if edit1.text=edit2.text then 
    begin 
      ShellExecute(0,'open','shutdown.exe',' -f -s -t 0',nil,SW_HIDE); 
    end
    else
     showmessage(edit1.text+‘-’+edit2.text ) 
      

  6.   


    edit1直接获取的系统时间
    是timer的ontimer时间
    edit1.Text:=datetimetostr(now);edit2就是要用户输入的一个文本框
    格式就是xxxx:xx:xx 00:00:00 这样的现在n次开机关机的结论
    可以直接写 不用 strtodatetime就可以了
    if edit1.text=edit2.text then
    begin
    ShellExecute(0,'open','shutdown.exe',' -f -s -t 0',nil,SW_HIDE); 
    end
    但是点button 必须是在edit1的值于edit2的值完全相同的情况下才关机
    而不是当系统时间走到于edit2的值的时候才关机恩  比如先写edit2的值为 2008:11:26 17:40:30
    edit1获取系统时间走到   2008:11:26 17:40:30 这个时间 也就是两个值完全相同的时候点button才能关机 否则不能关机我希望先设置edit2的时间 点button 然后edit1走到edit2设置的时间关机
    我该怎么解决?
      

  7.   

    edit2就是要用户输入的一个文本框 
    格式就是xxxx:xx:xx 00:00:00 这样的 格式相同么?
    strtodatetime是什么格式?????
    xxxx-xx-xx 00:00:00
      

  8.   


    呃 现在不用考虑那些
    现在最大的问题就是
    怎么才能实现先设置edit2的值点button 然后在edit1获取系统时间走到设置的edit2的值的时候执行
    ShellExecute(0,'open','shutdown.exe',' -f -s -t 0',nil,SW_HIDE); 为什么我这里必须是设置完edit2的值后  等到edit1的值完全等于edit2的值的时候点button才能成功关机?
      

  9.   

    你的button代码是什么?timer1和button是啥关系?button里面执行的是
    timer1.enabled:=true;?
      

  10.   


    if edit1.text=edit2.text then 
    begin 
    ShellExecute(0,'open','shutdown.exe',' -f -s -t 0',nil,SW_HIDE); 
    end button里执行的就是这些代码
    我直接把timer1的enabled设置为true了
    timer1只是获取系统时间显示在edit1中的
    于button没有直接关系
    难道必须先设置timer1的enabled为false
    然后点button写上timer1.enabled:=true;?
      

  11.   

    汗,这里写代码,那就是只判断了一次,当然是点button的时候判断了。把这代码放到
    timer1事件里面去,不要button了。
      

  12.   

    你是想实现一个 按钮触发的“定时关机” 功能我猜你edit1仅仅是想显示当前时间而已你设置一个全局变量RealClose来实现
    var
      RealClose: Bool = False;procedure TForm1.procedure Button1OnClick(Sender: TObject);
    begin
      RealClose := True;
    end;procedure TForm1.tmr1Timer(Sender: TObject);
    begin
      edit1.Text := datetimetostr(now);  if (RealClose) and (edit1.text=edit2.text) then 
      begin 
        ShellExecute(0,'open','shutdown.exe',' -f -s -t 0',nil,SW_HIDE); 
      end; end;