C++ Builder XE7 VCL を使用しています。
2016 年 8 月 11 日午後 2 時 (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 プリンター ドライバーを使用して行われましたが、ユーザーから受け取った苦情には、さまざまなローカル プリンター、ネットワーク プリンター、PDF プリンターなどがあります。
私の実際のプロジェクトでは、try/catch例外処理を行っているため、実際の結果はわずかに異なりますが、この結果とほぼ同じです。結果は、不安定性やメモリ リークの特徴を示していますが、エラー メッセージはほとんどありません。
Embarcadero DLL と絡み合っている Microsoft Windows の更新がいくつかあったのではないかと思いますが、これまでのところ確認できていません。
他の誰かが同様の問題を抱えていますか?