调试时有错误提示,但是执行编译后的exe文件却没错误,不知道哪里的问题!
我的程序中因为有循环,为了能使循环过程中,能点击form上的关闭退出程序,在form的onclose事件中加了:procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  b:=false;
  close; 
end;对应的,在循环中也用了,    b:=true;
    while not adoquery1.eof do
     begin     if not b then
        exit;     //其他     end;在调试的时候提示:但是运行编译的exe文件却没有错误提示,一切正常。虽然不影响正常使用,但是看着不舒服,不知道这是怎么回事?备注,我如果将Onclose事件中的代码
  b:=false;
  close; 
去掉就没那种提示,但是这样,循环中就关闭不了了。

解决方案 »

  1.   

    那个数据库任务放到个线程里试试close时候结束线程
      

  2.   

    adoquery1.next  有写这个吗?  loop 中
      

  3.   

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      b:=false;
      close; 
    end;这个似乎有问题吧,在FromClose里面调用close,这里是个死的递归调用,所以会引起栈溢出。
      

  4.   

    去掉了这里的close,在循环时,form上的关闭关闭不了了,加上就可以
      

  5.   

    要想在循环里面关闭窗体,直接在循环里面用Application.ProcessMessages();就好了嘛。
      

  6.   

    试试这个,管用不?我也是新手procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      b:=false;
      Action := caFree; 
    end;
      

  7.   

    直接在循环里面用Application.ProcessMessages();
    试一下。
      

  8.   

    怎么会在 formclose里面再调用 Close ?把 Close去掉吧,只要 b=false
      

  9.   

    formclose里再调用close,又会进入formclose,就是递归了。
    看看你的递归有结束条件吗?
      

  10.   

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      b:=false;
      sleep(200);
      application.ProcessMessages();
    end;