掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
finally内のStep実行? (ID:46014)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは。 又又、ご教授お願います。 環境は、WinXp Pro Sp3, Delphi XE3 Update2です。 以下の、処理でStep実行をすると、 Edit1.Clear; → Edit1.Text:='pass1'; → exit; → eEdit1.Text:='pass3'; → Edit2.Text='pass4'; の各文ごとに停止しながら進むと思うのだが、 Finally後の文で停止せず、すぐにTForm1.Button1Clickを抜け出てしまいます。 画面の表示上は、Edit1はpass3に,Edit2はpass4に値が設定されています。 procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Clear; try Edit1.Text := 'pass1'; exit; Edit1.Text := 'pass2'; finally Edit1.Text := 'pass3'; Edit2.Text := 'pass4'; end; end; ところが、途中のexit文がないとfinallyの各文でもStep実行がされます。 procedure proc1(); begin sl := TStringList.Create; try 何かの処理でEexitを実行 finally FreeAndNil(sl); end; end; としStep実行したときに、FreeAndNilで止まらず抜けてしまうので、 なんとなくStringListが廃棄されないよう思えてしょうがないです。 また、 function Func1(): boolean; begin try 何かの処理を実行 finally result := foo; end; end; とfinallyでresultを設定したとき、文法上finallyは必ず実行されるはずですが コンパイルすると'戻り値が設定されていない可能性があります'の警告が表示されます。 結果的には、正しく処理されているので問題がないと思いますが、なにか気持ちが悪いです。 私の理解が間違っているのでしょうか?。 それともDelphiとしては、これでいいのでしょうか? お分かりの方は是非教えてください。お願いいたします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.