我为程序做了个登录窗login 如果点了确定就连接数据库进行密码判断,点“取消”那么就让 " ModalResult:=MrCancel; " 工程中的部分代码如下:login:=Tlogin.Create(nil);  if login.ShowModal = mrOK  then
      begin
         login.Hide;     
         login.Free;
         Application.Title:= '管理系统';         Application.Run;
      end
 else
      begin
        login.Hide;
        login.Free;
        Application.Terminate;
      end;WIN2K下运行没有什么问题,但在WIN98下一点取消就非法操作,请问高手怎么解决?

解决方案 »

  1.   

    你用 halt 就可以了
      

  2.   

    Application.Terminate;当然会出错了呀 
    因为你还没有调用Application.Run呢所以不能Application.Terminate;的。很明显:人没有出生就不会有死亡!
      

  3.   

    参考: 
    else
          begin
            login.Hide;
            login.Free;
            Application.Run;
            Application.Terminate;
          end;
      

  4.   

    不如不写,不run就不用终止
    else
          begin
            login.Hide;
            login.Free;
      

  5.   

    你还没有run,所以不用Terminate,不写就可以了。
      

  6.   

    我的前面有个Logo窗,在它显示的时候我创建了很多窗体,Logo关闭后才登录,那么多窗体的资源难道让我一个个去 free ? 看来还是不行!
      

  7.   

    login:=Tlogin.Create(nil);  if login.ShowModal = mrOK  then
          begin
             login.Hide;     
             login.Free;
             Application.Title:= '管理系统';         Application.Run;
          end
     else
          begin
            login.Hide;
            login.Free;
            Exit;            //改成这个
          end;
      

  8.   

    楼上,错误:Read of address 772A11B
      

  9.   

    经过测试发现,只要工程的某个窗口里有个ADO控件,就不能正常地进行Application.Terminate;哪怕你断开连结,或者干脆那个控件什么属性都不设置…………ADO控件到底有什么特别之处…………问题正在解决中,请同仁高手指点
      

  10.   

    try
      login:=Tlogin.Create(Application);
      login.ShowModal;
    finally
      login.Free;
      if ModalResult=1 then
      begin
        Application.Title:= '管理系统';
        Application.Run;
      end
      else
          Application.Terminate;
    end;