ハンドルリークを仕様とか言っちゃうダメなサポートのある会社の続き。
#もう、伏せない。
サポートがダメだから、個人的に何とかしないとならん。
「ハンドルリークは仕様だから適宜再起動してください」では、何のサポートにもなっていないことを、IOデータは自覚すべき。
#ま、自覚できてりゃもう少しマシな回答するんだろうけどな。
と、言ってもはじまらん。
とりあえず、再起動しないわけにはいかない。
しかし、いちいち、ハンドルカウントを確認して、再起動するのは面倒この上ない。
ハンドルリークを仕様とか言っちゃうダメなサポートのある会社の続き。
#もう、伏せない。
サポートがダメだから、個人的に何とかしないとならん。
「ハンドルリークは仕様だから適宜再起動してください」では、何のサポートにもなっていないことを、IOデータは自覚すべき。
#ま、自覚できてりゃもう少しマシな回答するんだろうけどな。
と、言ってもはじまらん。
とりあえず、再起動しないわけにはいかない。
しかし、いちいち、ハンドルカウントを確認して、再起動するのは面倒この上ない。
ずっと考えていたけど、無いんですよね、必要な場面って。
昨日からの続き。
そして、構造体にコンストラクタを用意したところ、構造体を取り込んだ共用体でコンパイルエラーが発生する罠。
曰く、「共用体メンバに既定のコンストラクタを持たせることはできません」だそうな。
じゃぁ、既存構造体から新たに継承したクラスを作って・・・とかやると大手術になってしまうので、仕方ないからそれは次期バージョンにて考慮。
今回は、newでサーチしてnewや変数宣言など、構造体メモリを確保している箇所で片っ端から初期化してやろうと思う次第。
#必要な個所だけ。
他に、実はnewしているのは決まってExcelに返すデータをエクスポートする箇所なので、それらを一か所に集約してやろうかと。
これで今回の原因は撲滅できるはず。
100%確実ではないけれども、再現させる方法だけは見つけたので。
Windows 7を起動して、評価に使用したExcel95ブックをExcel2007で開くだけ。
すると、再計算50%を過ぎたところあたりでExcelがエラー(動作を停止)を起こす。
ここら辺が微妙なんだけど、50%のときもあれば、そうでない場合もあり。
2回目には起こらないので、都度OS再起動が必要。
ところが、通常、プロセスの異常時には、「デバッグしますか?」のダイアログが出るのだけれど、このExcel2007は自動修復するのか、デバッガでアタッチするとプロセスが終了してしまう。
困ったことナリ。
デバッグモードでは再現したことがないので、あたりをつけようにも・・・
とりあえず全エクスポート関数の大部分をtry~catchで囲んでみたのだけれども、状況は好転せず。
なんだか変。
Windows7やVistaで動作確認しようと、アドインを設定して、気を良くしてHLDIV(10,3)とかやるとExcel停止・・・
なんでやねん!
デバッグしようとしても痕跡なし。
じゃぁとVS2008からデバッグ実行すると、全く落ちず。
そうこうしてるうちにExcel停止が再現しなくなる。
なんだこりゃ?
本当に、あまりこういうことは書きたくないわけよ。
処理を簡素化するためにコンピュータ使うわけだから、そこに無用なイライラがあっちゃいけないはずなのに、無くならないのはこの業界がおかしいせいだと常々思っているってのはさておき。
バッチ処理のアプリなら、都度起動終了なので、大して問題じゃないけど、ウィンドウアプリの大半は、ユーザによる終了が無い限りはずっと動き続けるもの。
それをハンドルリークが仕様です、ご了承ください、ってな問い合わせ回答しちゃうようなメーカーがあるとは、ユーザーはどう受け止めればよいのでしょうかね?
ハンドルはリソースなので、OSとしても限りある資源、がっぱがっぱ使い放題された日にゃ、他のアプリケーションで何か不具合が起こってもおかしくないわけですよ。
重要。
でも、検算するのがとても大変なのは多桁演算の宿命。
だから、大体正しければいい、というものでもない。
除算の評価結果を見ていて、変なことに気付いた。
検算をするとどうもおかしい。
筆算してみても、自分が間違えてる可能性もある。
Windows付属の電卓はかなりの桁数計算できるが、それと比較すると、やはりどうも多桁計算側がおかしいようだ。
最近のコメント