プリンターにデータを送り続けると落ちるのですが…

解決


ヨコヤマ  2006-03-16 06:43:47  No: 130658

下記のようにプリンターにデータを送って出力しています。
ところがこのループを繰り返すうちにPCが不安定になり、
最終的にはシステムが落ちてしまいます。
「メモリが不足しています」のエラーも出たり出なかったりなので
何かが開放されていないようなのですが分かりません。
どなたかご教授ください。よろしくお願いいたします。
--------------------------------------------------------
    Do
        Set tmpFont = New StdFont

        tmpFont.Size = 9  (可変)
        tmpFont.Name = "MS 明朝"  (可変)

        Set Printer.Font = tmpFont
    
        ※ここで Printer.TextHeight("")等のデータを取得
        
        tmpFont.Name = 9  (可変)
        tmpFont.Size = "MS ゴシック"(可変)

        Printer.CurrentX = 100  (可変)
        Printer.CurrentY = 100  (可変)
        Printer.Print "Test"  (可変)

        Set tmpFont = Nothing
    Loop
--------------------------------------------------------


ヨコヤマ  2006-03-16 08:53:49  No: 130659

補足です。

上記ループを数十回まわした後、Printer.EndDocで出力します。
その一連の流れを続けていると落ちます。

どうかよろしくお願い致します。


めだか  2006-03-16 09:37:38  No: 130660

Set tmpFont = New StdFont
tmpFont.Size = 9  (可変)
tmpFont.Name = "MS 明朝"  (可変)
Set Printer.Font = tmpFont

これをやめて

Printer.Font.Size = 9  (可変)
Printer.Font.Name = "MS 明朝"  (可変)

としてみたらどうでしょう。


よこやま  2006-03-16 20:45:29  No: 130661

めだか様
レスありがとうございます。

早速StdFontを使わず、直接Printer.Fontを設定するようにしました。
結果的に出力可能なページ数は伸びましたが、やはり落ちてしまいます。

と言うのも、書いてはいませんでしたが基本フォント情報をとっておく
別のStdFontを使っていたのでそちらの問題かもしれません。
と、考えるとStdFontの使用数に比例して早く落ちるということでしょうか…。
なんとか、StdFontを使用して落ちない方法を調べないといけないですね。
その辺の事情をご存知の方、よろしくお願いいたします。


ヨコヤマ  2006-03-16 23:56:45  No: 130662

追伸2

他の症状としては、MsgBoxの大きさが大きくなったりしてしまいます。


特攻隊長まるるう  2006-03-17 00:05:48  No: 130663

スプールって知ってる?
http://e-words.jp/w/E382B9E38397E383BCE383AB.html

プリンタのこと考えないで待たずにループ回せるだけまわせば、
そりゃ、いつかは破綻して当然でしょう。メモリは物理的に
有限なんですから。


ヨコヤマ  2006-03-17 00:39:11  No: 130664

特攻隊長まるるう様
レスありがとうございます。

実際プリンタに送る(印刷する)データ量はそれほどではありませんので
それでメモリがいっぱいになっている訳ではないと思います。


我龍院忠太  2006-03-17 00:53:53  No: 130665

提示されたコード以外の場所でトラブっているなら、
トラブルが再現出来る最小限のコードを提示してもらわないと、
想像だけが膨らんでしまう。(^^;


特攻隊長まるるう  2006-03-17 02:09:54  No: 130666

貴方がプリンタを使った処理に精通していて、確実な根拠が
あるのであれば、
>それでメモリがいっぱいになっている訳ではないと思います。
ではなく、実際に他人がそう納得できるテストを実行して、
その具体的な結果を報告してください。


よこやま  2006-03-17 02:18:44  No: 130667

我龍院忠太様
特攻隊長まるるう様
レスありがとうございます。

>想像だけが膨らんでしまう。(^^;
すみません。今、落ちる最小限のサンプルを作ろうとしていますが、
それもなかなかうまくいかない状態です。
(それが出来たときは、根本的に解決かもしれませんが…)

>その具体的な結果を報告してください。
あまり精通はしていませんので説明不足はお許しください。
実際プリンタに500MB以上の出力データを送って印刷することは可能ですが、
今回のシステムが落ちるときは300MB送った時点で落ちています。
これが説明になりますでしょうか…


よこやま  2006-03-24 18:12:00  No: 130668

Set tmpFont = New StdFont
をループの外に出すことで解決しました。
失礼しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加