Ошибка при печати
Появляется окно с сообщением Access violation при попытке распечатать отчет, если по умолчанию в системе стоит принтер Xerox WorkCentre 6015.
Если поставить по умолчанию другой принтер, и в окошке выбора принтеров выбрать Xerox то снова появляется сообщение об ошибке, либо программа самостоятельно закрывается.
Драйвера на принтер установлены самые свежие, с сайта производителя.
FastReport обновлял до самой последней версии, проблема не исчезла.
Тестировал на разных ПК, с разным ПО и разными версиями FastReport - проблема остается.
Если поставить по умолчанию другой принтер, и в окошке выбора принтеров выбрать Xerox то снова появляется сообщение об ошибке, либо программа самостоятельно закрывается.
Драйвера на принтер установлены самые свежие, с сайта производителя.
FastReport обновлял до самой последней версии, проблема не исчезла.
Тестировал на разных ПК, с разным ПО и разными версиями FastReport - проблема остается.
Комментарии
Причина:
ПО "падает" при вызове функции
DeviceCapabilities(PChar(FName), PChar(FPort), DC_PAPERNAMES, PaperNames, FMode);
- это получение перечня поддерживаемых названий бумаги для принтера.
В модуле frxprinter.pas
Решение:
Мне помогло комментирование подчеркнутой строчки (в этом же файле):
procedure TfrxPrinter.Init;
...
begin
...
//FillPapers;
...
end;
Поскольку перечень размеров бумаги в данном диалоге не используется.
[сарказм]Всем спасибо за помощь.[/сарказм]
У принтера есть возможность подключения в сеть как принт-сервер, но ситуация не меняется.
Только принтер Xerox 3435
Но есть тонкости:
1) репортер запускается на сервере приложений Windows (как RAPP)
2) при таком запуске контент генерируемый репортером сначала конвертируется в формат XPS, затем передается на клиент и только потом уходит на ксерокс. Все эти выкрутасы делает сама винда.
И именно такая работа выдает не поправимую ошибку.
Что еще можно сказать....
3) Я комментировать не стал, я сделал IF
4) падение происходит на первом вызове функции PaperSizesCount := DeviceCapabilities(PChar(FName1), PChar(FPort1), DC_PAPERS, @PaperSizes, FMode); в процедуре FillPapers и при аналогичном вызове в FillBins
5) в МСДН написано: Ключевой момент здесь в том, что функцию надо вызывать в отдельном треде, что фаст репорт не делает.
Три месяца прошло с моего поста, а ответа нет.
Или этот форум спецом создан, чтобы народ тут пар выпускал и для создания видимости работы с клиентами?