HaltとTerminate

解決


マプー  2009-03-28 22:37:28  No: 33781  IP: 192.*.*.*

現在QuadrupleDを使用してゲームを作成中なのですが、
ゲームの終了部分でDDSDNotifyThreadがエラーを吐きます。
おそらく読み込み途中で開放処理が入るせいでしょうが・・・

このとき、
Application.Terminateだとエラーが起こりますが、
System.Haltだとエラーは起こりません。

ヘルプによるとHaltはアプリケーションを以上終了させる、とありますが、
Haltを通常終了に使用していいのでしょうか。
やってみた感じでは良さ気でしたが・・・

編集 削除
monaa  2009-03-29 15:55:18  No: 33782  IP: 192.*.*.*

QuadrupleDは以前少しだけ触っただけなので詳しいお答はできませんが、
System.Haltはエラーが起こらないのではなく、無視しているだけです。
毎回そんな終了処理はすべきではないと思いますが、
配布目的でなければ問題ないかと思います。
ちなみに公式サイトが放置っぽいのでQuadrupleDについても触れますが、
D2009,vista,DirectX10でQuadrupleDを少しいじってUnicodeに対応させれば
普通にテストした限りでは終了時にDDSDNotifyThreadエラーは起こらなかったので
原因究明したほうがすっきりするとは思います。
ご自分の環境でチュートリアルを実行し最小環境で終了時エラーが出るのかを確認して、それでも出るのであれば、使用環境を教えてください。
最小環境で出ないのであれば知りませんw

編集 削除
マプー  2009-03-29 17:53:35  No: 33783  IP: 192.*.*.*

なんだかTerminateもHaltも両方エラーでるようになりました(-ω-;
×ボタンクリックではエラー吐きません。

DDSDチュートリアルでも、×ボタンではエラーでませんが
Terminate、Halt両方でDDSDNotifyThreadにてアクセスバイオレーション・・・
直前にDDSD1[0].Stopをいれてもダメでした。

環境はTurboDelphiExproler、vista、DirectX10です

http://ddev.blog46.fc2.com/blog-entry-55.html
コンポーネント使用方法は上記の通りです。
もしかしたらココが原因・・・?

編集 削除
マプー  2009-03-29 18:08:03  No: 33784  IP: 192.*.*.*

理由は不明ですが、TCustomForm.Closeを使用すると
エラーが出なくなりました。
一応解決をつけておきます

編集 削除
マプー  2009-03-29 19:58:53  No: 33785  IP: 192.*.*.*

ついてませんでしたねorz

編集 削除
マプー  2009-03-29 20:09:50  No: 33786  IP: 192.*.*.*

何回か実行するうちにまたもやエラーが・・・
Closeもダメなようです・・・

編集 削除