Двухприложение в Delphi 2010-XE

#delphi #ms-word

#delphi #ms-word

Вопрос:

Есть ли оно в современных версиях Delphi? (Я видел двухприложение в Delphi 7)

Обычно я использую CreateComObject, но, может быть, есть более удобные / мощные способы, поддерживающие Word 2007/2010?

Ответ №1:

ДА. Вы должны включить уже установленный, Microsoft Office <version> Sample Automation Server Wrapper Components где <version> указан идентификатор установленной версии Office.

Комментарии:

1. К сожалению, я получил только образец XP с установленным Office 2010. Есть ли что-нибудь новее?

2. @Keeper, нет. Вам придется импортировать библиотеки типов и самостоятельно генерировать компоненты оболочки, если вы хотите использовать более новые интерфейсы. XP все еще работает, хотя.

3. Если вы попытаетесь использовать более новые интерфейсы, вы рискуете использовать функцию, которая недоступна в некоторых старых версиях. Реально вы должны поддерживать Office 2003 в качестве базового, поскольку он все еще используется и будет использоваться в течение некоторого времени очень широко.

4. @Дэвид Хеффернан, это только де-факто базовая версия, потому что Borland просто перестала поддерживать ее в актуальном состоянии (банкротство, реструктуризация и т.д.). В коде из официальных источников (ср. [неправильные] типы из system.pas 🙂 нет ничего священного, в отличие от самодельного . После Office XP было выпущено два релиза, пришло время двигаться дальше.

5. @user Я не совсем ясно выразился. Если вы используете специфические интерфейсы Office 2007, то ваш код завершится ошибкой в 2003. При импорте библиотек новых типов вам необходимо импортировать наименьший общий знаменатель, который, на мой взгляд, должен быть не позднее 2003 года. Если, конечно, вы не хотите, чтобы все ваши пользователи отказались от вас ради другого продукта!!

Ответ №2:

TWordApplication доступно в современных версиях Delphi в точно таком же виде, как и в Delphi 7. На мой взгляд, проще использовать раннее связывание с TWordApplication , чем подход с поздним привязкой CreateComObject .