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

解決


angelica  2008-03-06 23:29:11  No: 30089

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 23:37:30  No: 30090

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

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

...ということ。


angelica  2008-03-06 23:51:32  No: 30091

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加