次行に制御が移るのを防ぐには?

解決


angelica  2008-03-06 14:29:11  No: 30089  IP: 192.*.*.*

procedure TForm1.FormCreate(Sender: TObject);
var S:widestring;
begin
  S:='';
  if S='' then begin showmessage('コード指定がありません'); application.Terminate;end;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.add('Select * from y_yakuhin where コード='+S);
  ADOQuery1.open;
    ・・・
  ADOQuery1.close;
end;

上記を実行しますと「コード指定がありません」を表示後、
「OK」でダイアログボックスを消すと、ADOQuery1.openでエラーになります。
つまりapplication.Terminateが実行されません(if〜then〜elseで囲むとOKです。)
なぜでしょうか?

編集 削除
しごく当然  2008-03-06 14:37:30  No: 30090  IP: 192.*.*.*

>なぜでしょうか?
ヘルプ↓を読んだこと無いの?

”Terminate メソッドは,Windows API PostQuitMessage 関数を呼び出して,アプリケーションを順番に閉じます。Terminate は即座には実行されません。”

...ということ。

編集 削除
angelica  2008-03-06 14:51:32  No: 30091  IP: 192.*.*.*

PostQuitMessage 関数の理解が必要のようです。
しごく当然 様、ありがとうございました。

編集 削除