Laboratory of Mobile Agricultural Chemicals Searcher
携帯農薬検索実験室

研究会

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
28 / 114 ツリー <前へ | 次へ>

〔837〕ACFinder クエリ読み込みでエラー Hidemi Oya (08/09/06 19:23)
〔838〕Re:ACFinder クエリ読み込みでエラー kabe (08/09/06 20:09)
〔840〕Re:ACFinder クエリ読み込みでエラー Hidemi Oya (08/09/07 12:26)
〔841〕終了時エラーは SQLite.pas が原因? Hidemi Oya (08/09/07 14:04)
〔842〕Re:終了時エラーは SQLite.pas が原因? kabe (08/09/07 21:17)
〔845〕Re:終了時エラーは SQLite.pas が原因? Hidemi Oya (08/09/07 21:46)

〔837〕ACFinder クエリ読み込みでエラー
 Hidemi Oya WEB  (08/09/06 19:23)

引用なし
    [#832] のスレッドのチェックをしていて気がついたんですが、SQL タブで読み込みを実行するとエラーになって勝手にメインウィンドウが消えてしまいます。しかも、ACFinder 自体はメモリ上に残っている状態です。ACFinder を \Program Files\ACFinder に置いても同じです。
 エラーは、終了時エラーと同じアドレス 0044F017 のメモリアクセスエラーです。

 それと、終了時エラーが出る状態で、acfinder.exe を置いたフォルダー化以外に DB フォルダーを置くと、終了時にエラー報告ダイアログが何度も出て終了できません。どうも、動的生成コンポーネントの開放タイミングとフォルダー解析ルーチンの両方に問題がありそうな感じです。
 現状では、少なくとも病害虫タブと SQL タブのグリッドは動的生成で、病害虫タブは使用しなくても薬剤タブに行くとなぜか生成され、SQL タブのグリッドはクエリを実行しない限り生成されません。この状況で動的生成コンポーネントを適切に開放するのは困難なので、各コンポーネントは全て静的生成にして、プログラム内で明示的に開放しているところを全て削除(静的生成コンポーネントはランタイムルーチンが自動的に開放してくれます)していただけないでしょうか?
 終了時エラーに関しては、コンポーネント開放のエラーがなくなれば、原因究明をしやすくなると思います。

〔838〕Re:ACFinder クエリ読み込みでエラー
 kabe  (08/09/06 20:09)

引用なし
   >Hidemi Oyaさん

kabeです。

> [#832] のスレッドのチェックをしていて気がついたんですが、SQL タブで読み込みを実行するとエラーになって勝手にメインウィンドウが消えてしまいます。
これは、気付いていましたが、終了時エラーが修正できず、まだ修正版を出せずにいます。
ダイアログの開放を Releace から Free に変更するとエラーは出なくなるので、この部分については修正可能です。

> 現状では、少なくとも病害虫タブと SQL タブのグリッドは動的生成で、病害虫タブは使用しなくても薬剤タブに行くとなぜか生成され、
いや、Grid については全て静的に配置していて、Visible をfalse にしているだけです。

終了時エラーについては TXlsStringGrid を開放し終わった際にエラーが出るようなので、Gridコンポーネントを別にものに変更したバージョンも作ってみようと思いますが、まだ手を付けられずにいます。

〔840〕Re:ACFinder クエリ読み込みでエラー
 Hidemi Oya WEB  (08/09/07 12:26)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

>いや、Grid については全て静的に配置していて、Visible をfalse にしているだけです。
 ああ、見えなくしてるだけでしたか…。見えるタイミングが違うタブがあるのは、何か理由があるのでしょうか?

>終了時エラーについては TXlsStringGrid を開放し終わった際にエラーが出るようなので、
 プログラム内で明示的に開放してるわけじゃないんですよね?
 TXlsStringGrid の Constructor/Destructor を確認しましたが、特に問題はなさそうです。ただ、親クラスとパラメータが同じ場合は、inherited はパラメータ無しでも OK で、Delphi のバージョンによってはパラメータ有り/無しでなんか微妙に挙動が違ったような記憶もあります。TXlsStringGrid の Constructor/Destructor の inherited の行をパラメータ無しの inherited; にしてみるとどうでしょうか?

>Gridコンポーネントを別にものに変更したバージョンも作ってみようと思いますが、まだ手を付けられずにいます。
 TXlsStringGrid を使わない場合、Excel や HTML での出力が面倒になりますね。

 終了時エラーは、文字列お開放とかも関わっているようなので、もしかすると SQLite.pas にも原因があるかもしれません。こちらでも確認してみます。

〔841〕終了時エラーは SQLite.pas が原因?
 Hidemi Oya WEB  (08/09/07 14:04)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

> 終了時エラーは、文字列お開放とかも関わっているようなので、もしかすると SQLite.pas にも原因があるかもしれません。こちらでも確認してみます。
 TSQLiteTbl のデストラクタで、テキストデータを開放せずにポインタだけ開放してたんですが、これが原因のひとつのようです。もうちょっと確認した上で、修正版を送ります。

〔842〕Re:終了時エラーは SQLite.pas が原因?
 kabe  (08/09/07 21:17)

引用なし
   >Hidemi Oyaさん

kabeです。

動的に生成しているコンポーネントを静的に配置するようにしたら、なぜかエラーがなくなりました。
修正版SQLite.pasも反映させました。
いくつかのフォルダ名で試しましたが、完全に直っているかどうか不明です。



〔845〕Re:終了時エラーは SQLite.pas が原因?
 Hidemi Oya WEB  (08/09/07 21:46)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

>動的に生成しているコンポーネントを静的に配置するようにしたら、なぜかエラーがなくなりました。
 動的生成した変数やコンポーネントは、プログラマが解放してやらないとメモリリークの原因になるので、数が多くなるとなかなかやっかいですよね。かといって、解放のタイミングを間違ったり、多重解放を見逃したりするとランタイムエラーになりやすいですし。
 [#844] で書いたように、080907 版でも相変わらず終了時エラーがでます。静的に生成したコンポーネントは自動的に解放されますが、以前の解放ルーチンが残ってたりしませんか?

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
28 / 114 ツリー <前へ | 次へ>
ページ:  ┃  記事番号:   
(SS)C-BOARD vv3.8 is Free.