Delphi XE3 を使用して Windows サービスを作成しています。サービスはデータベースから読み取り、quickreport 5.05.1 を使用して pdf を生成します。TQRPDFDocumentFilter を使用して pdf を生成する予定です。
通常の VCL アプリケーションではすべて正常に動作しますが、Windows サービスに実装すると、QuickRep.Prepare を実行するとサービスが (例外なく) ハングします。
Windows サービスで QuickReport を使用できると読みましたが、その方法がわかりません。助言がありますか?
コードはどこにありますか:
procedure foo
var
pdfFilter: TQRPDFDocumentFilter;
begin
with TForm2.Create(Self) do
begin
ClientDataSet1.Open;
QuickRep1.Prepare;
pdfFilter := TQRPDFDocumentFilter.Create(GetApplicationFolder() + 'test.pdf');
try
QuickRep1.QRPrinter.ExportToFilter(pdfFilter);
finally
pdfFilter.Free;
ClientDataSet1.Close;
end;
end;
end;
編集:別のスレッドで提案されているように、QuickReport で「進行状況を表示」をオフにしてみました。例外をキャッチするコードを書くと、実際に例外がスローされることがわかります。メッセージは「現在選択されているデフォルトのプリンターはありません」です。したがって、サービスが実行されているローカル システム ユーザーにはプリンターがインストールされておらず、これが問題であると思われます。