喫茶XRAYトップページ


[1116] plPrevでエラーが出ます返信 削除
2007/2/19 (月) 21:03:10 taki
マスター こんばんは

plPrev(だと思うのですが)でエラーが出ます。
その1 キャンバスに対する描画ができません.
その2 行を挿入できません.
その3 モジュール ntdll.dllのアドレス7C950C3Fでアドレス
    001CD9E5に対する読み込み違反が起きました。
 です。
その1とその2はメッセージダイアログで表示されました。

処理内容は、複数のページの情報を記憶しておき、表示したいページを
指定すると、そのページを逐次表示方式で1ページ分描画用クラス
メソッドでキャンバスに書き込んでいます。

エラーが発生するのは、何度も描画を繰り返していると発生する
ようです。
プログラムを終了して、再起動すると続きの処理ができますが、
しばらくするとエラーになります。

開発環境 D2005Pro WinXPPro + SP2 です。よろしくお願いします。

追加です
描画している場所は自前のフォームです。

[1118] Re:plPrevでエラーが出ます返信 削除
2007/2/20 (火) 17:40:20 taki
自己レスです。

マスターへ

今日、再びデータを入力してみたのですが、どうもエラーに再現性が
ありません。

もう少しテストして再現性(規則性)が見つかれば相談にのってください。

一つ質問なのですが、メタファイルを解放Freeしているタイミングは
いつなんでしょうか。逐次表示方式での描画は何かどんどんデータが
溜まってしまっているような感じがして心配です。

手続きHogeHogeが実行される度に前回の分は消されているのでしょうか?

[1119] Re2:plPrevでエラーが出ます返信 削除
2007/2/20 (火) 18:36:25 Mr.XRAY
▼ takiさん

どうも,ご迷惑をおかけしているようで.

> 手続きHogeHogeが実行される度に前回の分は消されているのでしょうか?

描画用メタファイル解放破棄は,TplPrevがDestroyの時,つまり印刷プレビュー
制御コンポが配置してあるFormがなくなる時です.
多分メモリリークではないか思いますが,2ヶ所あるんです.次回のバージョン
アップの時に一緒にと思ったのですが...
どんどん日にちが経ってしまって...
スミマセン.これが原因かも知れません.

■ DrawPictメソッドとStretchDrawPictメソッド
   plJpegの解放忘れ

とりあえず,この修正だけでのちほどアップします.



[1120] Re3:plPrevでエラーが出ます返信 削除
2007/2/20 (火) 18:44:14 Mr.XRAY
> とりあえず,この修正だけでのちほどアップします.

アップしました.Ver. 4.72ととしました.
オンラインマニュアルは今日中に修正します.


[1121] Re3:plPrevでエラーが出ます返信 削除
2007/2/20 (火) 19:20:01 Mr.XRAY
> 描画用メタファイル解放破棄は,TplPrevがDestroyの時,つまり印刷プレビュー
> 制御コンポが配置してあるFormがなくなる時です.


逐次表示方式の場合は,各頁ごとにFreeAndNilして再度生成しています.
でも先読みの場合もちょっと考えてもいいかも知れませんね.
う〜む...
そうなると,(他のフォーム)のShowメソッドはSubClassでは対応がむずかしい
ですね.メッセージの補足か.面倒だな...


[1122] Re4:plPrevでエラーが出ます返信 削除
2007/2/20 (火) 19:45:45 taki
▼ Mr.XRAYさん

早速の対応、ありがとうございます。

> 逐次表示方式の場合は,各頁ごとにFreeAndNilして再度生成しています.
> でも先読みの場合もちょっと考えてもいいかも知れませんね.


逐次表示方式はページ毎に解放と生成を繰り返しているのですね。
安心しました。

以前、Delphi4のメタファイルで痛い目に遭っているもので・・・


INCM/CMT
Cyclamen v3.82