Советы по Delphi

         

Проблема печати RTF


Один мой коллега имел проблему при печати RTF-файла. Проблема заключается в том, что компонент RTF, входящий в поставку Delphi 2 (да и другие аналогичные свободные или коммерческие компоненты, которые я сумел найти) перед печатью требует загрузки файла целиком. Файл, созданный ранее, может быть *очень* большим и попросту не может загрузиться в память. Опция быстрой печати конечно, отличная штука, но и она ждет, пока файл не загрузится в память полностью.

Я нашел одно решение, конечно не идеальное, но оно без проблем работает под Win95 - вызов редактора WordPad с недокументированным параметром:

shellExecute(mainForm.handle,
nil,'write.exe','myfile.rtf /p',nil,SW_HIDE);

(Я выяснил, что вызов WRITE.EXE намного универсальнее, поскольку путь к файлу WORDPAD.EXE не всегда определен.)

Параметр "/p" является недокументированным. Код сначала запустит WordPad, напечатает файл, и затем закроет WordPad. SW_HIDE, является единственным параметром, позволяющим хоть как-то прятать работу WordPad.

WordPad загружает в память файл насколько это возможно, но это работает благодаря механизму сегментации, когда в необходимый момент времени подгружается другая часть файла. При работе с WordPad файл загружался и выводился на печать довольно быстро. Проблем совместимости не существует - WordPad имеется на каждой системе Win95.

[000234]



Содержание раздела