- このトピックは空です。
-
投稿者投稿
-
2021年7月1日 10:53 AM #2240
山田@ELTEX
ゲストお世話になっております。
現在WR2.0を使用させていただいているのですが、連続して
帳票を印刷すると、40枚くらいめで画像が印刷されなくなり、
その後wrPrintで8030(印刷中に異常が発生しました)が発生
する、といったトラブルに見舞われております。DLLバージョン:サポートからDL可能な最新のもの
OSバージョン:Windows95、98
開発プラットフォーム:VB5.0現象を見る限り、メモリリークが発生しているのは確実っぽい
ですので(印刷を続けると、リソースが見る見るうちに減って
いきます)先週より調査を進めているのですが、さっぱり理由が
わからず手詰まりになってしまったため、ご相談に伺いました。現象は上記の通りで、エラー発生後(リソース:10%程度)
アプリケーションを終了(その時点でリソースは50%程に復帰)、
その後再度アプリケーションを起動してみたのですが、
印刷ジョブを走らせたとたんにリソースが5%程まで減少し、
印刷を行うことができなくなってしまいます。帳票は2枚(別のwrpファイル)で1セットとなっており、1回の
印刷ジョブでその2枚が印刷されるような形になっております。実際には、以下のようなコードになっているのですが、
「どこでメモリリークしているのか?」
「根本的に使い方を間違ってはいないか?」
という点で、アドバイスなどいただければ大変幸いに思います。Private Sub 《[印刷]ボタンのClickイベントハンドラ》
‘1枚目を印刷
wrInit
wrSetErrorDispMode … エラーを非表示に
wrLoadReport … 1枚目のレポートを読み出し
wrSetPrintMode … デフォルトのプリンタに設定
wrOpenPrinter
:テキスト、DIBを取得
wrSetText、wrLoadDIB×複数回
wrPrint
wrClosePrinter
wrUnloadReport
wrExit‘2枚目を印刷
wrInit
wrSetErrorDispMode … エラーを非表示に
wrLoadReport … 2枚目のレポートを読み出し
wrSetPrintMode … デフォルトのプリンタに設定
wrOpenPrinter
:テキスト、DIBを取得
wrSetText、wrLoadDIB×複数回
wrGetObjectProp、wrSetObjectProp×複数回
wrPrint
wrClosePrinter
wrUnloadReport
wrExitEnd Sub
(実際は、それぞれの関数呼び出しに対してエラー処理が入って
おります)問題を切り分けるため、上記にある「テキスト、DIBを取得」の
処理をすべて削除し、純粋に印刷処理のみ行ってみたのですが、
結果は変わりませんでした。また、[印刷]ボタンを押されるたびにこの関数を通ることから、
「wrInit」「wrLoadReport」などの1セッション中での複数回呼び
出しが悪さをしているのかと思い、Form_LoadでwrInitを、
Form_QueryUnloadでwrExitを呼ぶようにもしてみたのですが、
こちらも残念ながら結果は変わりませんでした。複数種類のプリンタ(HP、Canonなど)で同様の現象が発生する
ため、プリンタドライバに依存する問題ではなさそうです。ご迷惑をおかけして誠に申し訳ないのですが、アドバイスなど
いただけると大変助かります。よろしくお願いいたします。2021年7月1日 10:54 AM #2241山田@ELTEX
ゲストお世話になっております。
ちょっと補足します。処理中のwrSetText、wrLoadDIB、wrGetObjectProp、
wrSetObjectPropを呼び出している部分を
すべてコメントアウトして試しても見たのですが、
やはり現象は同じでした。(リソースが減っていく)我々のほうでAPIの呼び出し方を間違えているのか、
もしくはwrpファイルに問題があるのか・・・?お手数をおかけしますが、よろしくお願いします。
2021年7月1日 10:54 AM #2242松嶋@ソフトウィング
ゲストお世話になります。
リソースが減少するとのことですが、リソースタイプは何でしょう
か?また、デザイナーからテスト印刷を行った場合はどうでしょうか?大変お手数ですが、宜しくお願いいたします。
2021年7月1日 10:54 AM #2243山田@ELTEX
ゲストレスありがとうございます。
> リソースタイプは何でしょうか?
申し訳ありません、リソースモニタではなく、
システムのプロパティで表示される
システムリソースの残り%をチェックしていました。リソースモニタで確認すべきタイプは
・アロケート済みメモリ
・空きメモリ
・ロックされたメモリ
でよろしいでしょうか?> デザイナーからテスト印刷
すみません、こちらも確認していませんでした。
確認後再度レポートいたします。2021年7月1日 10:54 AM #2244松嶋@ソフトウィング
ゲストお世話になります。
>リソースモニタで確認すべきタイプは
>・アロケート済みメモリ
>・空きメモリ
>・ロックされたメモリ上記項目以外に、GDI/USERのリソースを確認してください。
大変お手数ですが、宜しくお願いいたします。2021年7月1日 10:55 AM #2245山田@ELTEX
ゲストお世話になっております。
ご連絡遅れて申し訳ありません。こちらのトラブルについてですが、WRのバージョンを3.0にあげ、
各関数の置き換え+レポートの再作成を行ってみたところ、
メモリの減少がなくなり、問題なく連続印刷可能になりました。ということで、バージョン3.0のほう購入させていただき、
ユーザーでのトラブルは回避できました。ありがとうございます。・・・が、根本的な原因のほうを報告しなければいけないという
ことで、調査のほうご協力いただければと思います。ご指示いただいたリソースモニタの監視についてですが、
1セット(2枚)印刷を行うたびに、以下のような動きがありました。
(アプリケーションから連続して印刷、20セット目で印刷エラー)アロケート済みメモリ:
128前後のまま変わらず空きメモリ:
7.8前後のまま変わらず、20セット目で突然0.2に減少ロックされたメモリ:
37前後のまま変わらずシステムリソース(残):
60から、1セット印刷するたびに2ずつ減少、20セット目時点で15USERリソース(残):
65のまま変わらずGDIリソース(残):
60から、1セット印刷するたびに2ずつ減少、20セット目時点で15上記から、GDIリソースが豪快に目減りしていることが推測されます。
恐らくレポート中に含まれている画像リソースの解放がうまく
行っていないのではないかと思うのですが・・・なお、デザイナーからテスト印刷を行った場合は、リソースの減少が
ありませんでした。まことに申し訳ありませんが、確認のほうよろしくお願いいたします。
2021年7月1日 10:56 AM #2246松嶋@ソフトウィング
ゲストお世話になります。
弊社製品をお買いあげ頂きましてありがとう御座います。
また、引き続きの調査についてもお礼申し上げます。現象についてですが、
>上記から、GDIリソースが豪快に目減りしていることが推測されま
>す。
>恐らくレポート中に含まれている画像リソースの解放がうまく
>行っていないのではないかと思うのですが・・・レポートにイメージが使用してあると言うことですが、このイメー
ジを使用しない場合はGDIのリソースが減少することは無いのでし
ょうか?また、イメージの設定方法ですが、デザイン時に指定した
状態で出力を行っているのでしょうか?以上、大変申し訳ありませんが宜しくお願いいたします。
2021年7月1日 10:56 AM #2247山田@ELTEX
ゲストお世話になっております。
ご解答ありがとうございます。> レポートにイメージが使用してあると言うことですが、このイメー
> ジを使用しない場合はGDIのリソースが減少することは無いのでし
> ょうか?また、イメージの設定方法ですが、デザイン時に指定した
> 状態で出力を行っているのでしょうか?レポートに使用しているイメージですが、
・デザインの時点で背景のイメージを指定
・印刷時に動的に商品のイメージを指定(wrLoadDIB)と、両方行っております。
以前の調査時に後者(wrLoadDIBによる指定)の処理を全て外してみた
のですが、それでも同様の現象が起きていました。今回、3.0のデザイナーでレポートを作成しなおしたのですが、
もしかすると、2.0にて作成したレポートファイルが悪さをしているの
かもしれません。こちらですが、なにか確認する術はありますでしょうか?
まことに申し訳ありませんが、確認よろしくお願いいたします。
2021年7月1日 10:56 AM #2248松嶋@ソフトウィング
ゲストお世話になっております。
ご連絡ありがとう御座います。背景イメージ及び印刷時のイメージ処理を全て行わない場合はいか
がでしょうか?お手数ですが、宜しくお願いいたします。
-
投稿者投稿
- フォーラム「旧サポート掲示板」には新規投稿および返信を追加できません。