Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
130 / 15 / 6
Регистрация: 05.08.2013
Сообщений: 285

Доступ к интерфейсу COM C++ Builder XE5

09.12.2013, 01:44. Показов 1469. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
После экспериментов с доступом к различным приложениям через COM,
решил попробывать в C++ Builder XE5, trial версию которого скачал с оффициального сайта embarcadero.
Ради примера решил сделать приложение с участием Word.
Импортировал библиотеку (Microsoft Word Type Library 11) для 2003 оффиса.
Подключил TLB.
Объявил экземпляр интерфейса класса.
И инициализировал интерфейс.
Однако, при отладке получил сообщение "Класс не зарегистрирован".
Аналогичный пример в C++ Builder 6 работает отлично.
Есть лишь 2 различия между этими примерами
1)При подключении _TLB.h RAD studio пишет 2 ошибки
[ilink32 Error] Error: Unresolved external 'Word_tlb::IID__Document' referenced from C:\DOCUMENTS AND SETTINGS\ССС\МОИ ДОКУМЕНТЫ\RAD STUDIO\PROJECTS\WORD\WIN32\DEBUG\WORDX.O BJ
[ilink32 Error] Error: Unresolved external 'Word_tlb::CLSID_WordDocument' referenced from C:\DOCUMENTS AND SETTINGS\ССС\МОИ ДОКУМЕНТЫ\RAD STUDIO\PROJECTS\WORD\WIN32\DEBUG\WORDX.O BJ
Поэтому подключаю _TLB.cpp, что влечёт за собой следущую ошибку
2)C++ Builder XE5 ругается на повторное объявление #pragma package(smart_init)
, в отличии от C++ Builder 6, поэтому я его закомментировал.
Пример кода такой
Файл .h
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//---------------------------------------------------------------------------
 
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include "Word_TLB.cpp"
//#include "Word_TLB.h"
 
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    void __fastcall FormCreate(TObject *Sender);
private:
    TCOM_Application app;       // Указатель на интерфейс из TLB
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
файл cpp:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "WordX.h"
//---------------------------------------------------------------------------
//#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
app = CoWordApplication::Create();
//app1.CreateInstance(__uuidof(Application));
//Imy.CreateInstance(__uuidof(ICSDocuments));
app->Visible=True;
}
Вроде, простенькое приложение, всего-то должно сделать видимым окно Word...
Мне кажется, что это из-за неверного подключения _TLB
Может кто-то знает, как решить эту проблему.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2013, 01:44
Ответы с готовыми решениями:

Проект по графическому интерфейсу Embarcadero RAD studio C++ Builder
Исходные данные: Постановка задачи. Меню кафе содержит перечень блюд, предлагаемых клиенту, с указанием названия и стоимости. Блюда...

доступ к интерфейсу любой программы
Есть программа с оконным интерфейсом windows. Программа представляет собой грид(таблицу), двойной клик по любой строчке этого грида...

Совместимость C++ builder 6 и Xe5
Добрый вечер. На Windows 7 установлен C++ builder 6. Хочу установить ещё Xe5. Как на счет работы вместе? Возможно ли? Друг говорит,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.12.2013, 01:44
Помогаю со студенческими работами здесь

Не запускается проект в C++ Builder XE5
при компиляции появляются следующие ошибки (скрин) отчего они появляются и как можно исправить?

Создание компонент в C++Builder XE5
Доброго дня. Знакомлюсь с новой средой. Есть созданные мной ещё в Цпп6 компоненты. В 6, как помню, устанавливаются компоненты в...

Динамическое программирование (С++ Builder XE5)
Ребят, очень нужна помощь, программа рабочая, но она написана с помощью циклов, а мне нужно написать её с помощью динамического...

Перенести среду С++ Builder XE5 на флешку
Заранее извиняюсь за глупый вопрос (мб оффтоп). :sorry: В общем, мне нужно сохранить мой XE5 билдер на флешку, не могли бы вы сказать,...

Вылетает при компиляции / C Builder XE5
При запуску программы вылетает сообщение &quot; Прекращена работа Project 1.exe&quot; Хотя до этого все было хорошо. Прикрепил ссылку на проект,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru