|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.07.2018, 20:49 | #1 |
Новичок
Джуниор
Регистрация: 27.07.2018
Сообщений: 2
|
JvRichEdit ошибка при вставке OLE-объекта (doc файл), начиная с Win10 1803
Добрый день, уважаемые форумчане!
Имеем it-проект, работающий с БД. Для объектов одной из его подсистем требуется, чтобы пользователь имел возможность привязывать сопроводительную документацию в формате doc MS Word. Ранее было принято решение использовать компонент JvRichEdit (из JEDI VCL). В нем реализована поддержка вставки OLE-объектов, в частности документов MS Word. В результате без проблем вставлялись doc-файлы любой сложности и сохранялись в нашу БД, при этом их без проблем можно было распечатать, используя компонент frxRichView из генератора отчетов FastReport. Но начиная с Win 10 версия 1803, при вызове JvRichEdit.Lines.SaveToStream(ms) возникает ошибка (SaveToStream используем, чтобы потом полученный ms: TMemoryStream сохранить в БД). При этом вставка doc-документа, т.е. вызов JvRichEdit.InsertObjectDialog, проходит и сейчас нормально и doc-документ вставляет нормально. Ошибка при вызове JvRichEdit.Lines.SaveToStream(ms) такая: сначала выскакивает Invalid floating point operation, затем access violation at address 73AD75E1 in module 'RICHED20.dll' Начали копаться в JvRichEdit.pas - ошибку вызывает вызов SendMessage(FRichEdit.Handle, EM_STREAMOUT, TextType, LPARAM(@EditStream)) в методе TJvRichEditStrings.DoExport; Есть подозрение, что в Microsoft что-то намудрили с библиотекой RichEd20.dll в новой версии Win10. Во всех предыдущих версиях Windows даже в более ранней Win10 - код работает нормально. Что можете посоветовать, как быть? Заранее спасибо! |
04.08.2018, 12:18 | #2 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
С высокой вероятностью есть предположение, что каким-то образом нужно сохранять контрольное слово сопроцессора перед вставкой объекта OLE и восстанавливать после. Лучше в блоке try-finally.
Если никаких точных вычислений в программе не выполняется и тип Extended не используется (может неявно использоваться RTL), можно поставить умолчательное контрольное слово сопроцессора, совместимое с Windows. Функции Get8087CW/Set8087CW.
В разработке: воспроизводственный контур ИТ
|
06.08.2018, 11:29 | #3 | |
Новичок
Джуниор
Регистрация: 27.07.2018
Сообщений: 2
|
Цитата:
Код:
Последний раз редактировалось srjfrl; 06.08.2018 в 15:59. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вылетает ошибка при вставке в таблицу через Insert (ex. Что здесь не так ) | pavel0088 | SQL, базы данных | 9 | 02.02.2013 07:15 |
Ошибка при вставке записи | Ericnex | БД в Delphi | 11 | 16.08.2012 12:58 |
Ошибка при вставке изображения в Joomla 2.5 | Умагаджи | WordPress и другие CMS | 1 | 09.07.2012 10:32 |
OLE = MSWord.doc | tolikman | Microsoft Office Access | 1 | 23.12.2008 11:43 |
При открытие в OpenDialog .doc-вский файл должен отображаться в RichEdit. doc to rtf | Lemon | Компоненты Delphi | 9 | 07.06.2007 19:19 |