私はC++ Builder XE7 VCLを使用しています。TPrinter(XE7)が突然今日問題を抱えているのはなぜですか?
2016年8月11日午後2:00午後2:00 UTCでは、印刷に関する問題についてユーザーから複数の苦情が寄せられました。これらの印刷モジュールのほとんどは長年にわたって安定しており、過去24時間以内に私のプロジェクトに更新はありませんでした。開発/テスト環境で同様の問題を再現することができました。すべてが期待どおりに完璧に動作し、印刷するための最初の試みで
void __fastcall TForm1::PrintButtonClick(TObject *Sender)
{
// Test Print:
TPrinter *Prntr = Printer();
Prntr->Title = "Test_";
Prntr->BeginDoc();
Prntr->Canvas->Font->Size = 10;
Prntr->Canvas->TextOut(300,1050,"* * * Printing Test * * *");
if (Prntr->Printing) {
Prntr->EndDoc();
}
}
:
私のプロジェクトの多くの詳細に入るがなければ、私は失敗している非常に単純な印刷プログラムを提示してみましょう。もう一度ボタンをクリックすると、TPrinter
が小さなPDFを生成しますが、実際にはPDFファイルが破損し、ファイルハンドルが残っているように見えます。私はボタンを3回目をクリックした場合
、私は印刷を取得していないと、次のエラーメッセージが表示されます。
Printer is not currently printing.
私自身のテストはPDFプリンタドライバを使用して行われたが、苦情は、私は、ユーザーから受け付けております
私の実際のプロジェクトでは、try/catch
例外処理があるため、実際の結果はわずかに異なりますが、この結果と実質的に似ています。結果は、エラーメッセージに関してあまり意味をなさない不安定性および/またはメモリリークの特徴を示す。
私は、Embarcadero DLLに絡み合っているMicrosoft Windowsアップデートがいくつかあったと思われますが、これまでこれを確認することはできませんでした。
誰もが同様の問題を抱えていますか?
はSTARTDOCが失敗したときに設定されていません。私は 'BeginDoc'の直後に 'Printing'をテストし、印刷しない場合はGetLastErrorを呼び出すことをお勧めします。 –
今日は同じエラーの報告があります。私たちの技術サポート担当者は、昨晩から顧客の1人にアップデートをロールバックさせ、印刷が開始されました。ちょうどそれを自分自身で調べ始める。 –
Windows 7 64には今週のアップデートがインストールされています。(Snagit 11プリンタを選択するために1行追加する)コードを使った簡単なテストはDelphi 10.1 Berlinでもうまくいきます。私はこれを入力すると、キャプチャされたページを見ています。 –