Форум программистов, компьютерный форум, киберфорум
Наши страницы

DAO и CBuilder - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преобразовать строку, содержащую буквы и цифры. http://www.cyberforum.ru/cpp-beginners/thread485019.html
Здравствуй! Меня зовут Антон ! Я хотел бы раздуплиться в С++ ! например в этой проге ! Имеется строка , содержащая буквы и цифры. Преобразуйте эту стоку так , чтобы сначала в ней шли все цифры ,а...
C++ Генерирование xml отчета Необходимо создать xml-отчет данные для него в текстовом формате как лучше поступить? http://www.cyberforum.ru/cpp-beginners/thread484897.html
C++ Movewindow работает неправильно..
делаю так //------------------------------------------------------------- CRect rNew; CRect rOld; ... ptr->GetWindowRect(&rOld); //старые координаты objNew->GetWindowRect(&rNew); //координаты...
Не работает примитивная консольная программа C++
Я в VC++ .NET просто создаю Console App,что бы вывести какое-то слово на экран, но там ошибка, что не понимает cout. Попробовал <iostream>, но не помагает???
C++ COM-технология http://www.cyberforum.ru/cpp-beginners/thread484755.html
Прочитал книгу Трельсена. Хочется применть полученные знания. А что можно такое написать, чтобы можно было бы потом использовать в качестве презентационной программы, демонстрирующей владение этой...
C++ Переменная float со значением 1.#QNAN Здравствуйте! Помогите пожалуйста с такой проблемой. При считывании из файла в переменной типа float оказалось значение 1.#QNAN (показывает отладчик в MSVS 6.0). При попытке произвести любую операцию... подробнее

Показать сообщение отдельно
Staser

DAO и CBuilder - C++

26.05.2010, 13:41. Просмотров 687. Ответов 0
Метки (Все метки)

Уважаемые программисты! Помогите разобраться, как же все-таки заставить
работать COM-билиотеку DAO на благо человечества?!!

Теория:
Для созданных на основе спецификации СОМ приложений не важно,
какой язык программирования использовался при их разработке —
если стандарт СОМ соблюден, взаимодействие осуществляется
без помех.

Задача (упрощенная, пониженной сложности):
Используется среда разработки CBuilder 6.
OS Windows 2k, библиотека от мелкомягкой фирмы Dao360.dll
Нужно добраться до метода CreateВDatabase и создать БД,
например Dao_Access.mdb (еще можно создать пару полей для наглядности)

Практика:
На VB: все рулез: подцепил библиотеку, получил доступ к содержимому
На Delphi: даже ничего подцеплять не надо, все само работает ))
На CBuilder: (( (а писать надо, естессно на нем)

Ход работы:
По ProgId 'DAO.DBEngine.36' получли соответствующий Clsid,
в итоге добрались до IUnkcnown.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//------------------------------------------------------
 
   Memo1->Lines->Add('Начало работы');
 
 
   // Инициализируем COM
   if ( FAILED(CoInitialize(NULL)) )   Memo1->Lines->Add('Невозможно инициализировать COM');
   else                                Memo1->Lines->Add('COM успешно инициализирован');
 
 
   // Преобразуем ProgID в CLSID
 
   HRESULT hr = CLSIDFromProgID(DAO_PROG_ID, &DAO_CLASS_ID);
 
   if ( FAILED( hr ) )   Memo1->Lines->Add('Невозможно получить CLSID по ProgID');
   else                  Memo1->Lines->Add('CLSID успешно получен по ProgID');
 
   
   // Получаем экземпляр фабрики классов
   IClassFactory* pCF;
   hr = CoGetClassObject(DAO_CLASS_ID, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, NULL, IID_IClassFactory, (void**) &pCF );
 
   if ( FAILED( hr ) )   Memo1->Lines->Add('Невозможно получить фабрику классов IClassFactory');
   else                  Memo1->Lines->Add('Получена фабрика классов IClassFactory');
 
 
   // С помощью фабрики классов создаем экземпляр компонента
   // и получаем интерфейс IUnknown
   IUnknown* pUnk;
   hr = pCF->CreateInstance(NULL, IID_IUnknown, (void**) &pUnk );
 
   pCF->Release();
 
   if ( FAILED( hr ) )   Memo1->Lines->Add('Невозможно получить интерфес IUnknown');
   else                  Memo1->Lines->Add('Получен интерфес IUnknown');
 
 
   // Получаем объект _DBEngine
   
/*
   ???????????????????????????????
   ???????????????????????????????
   ???????????????????????????????
 
   ... и создаем базу методом CreateTable!
*/
   pUnk->Release();
 
//------------------------------------------------------
И вот в этом месте полный затык, а ведь все наверняка достаточно просто.

в одном из примеров приводилась директива
#import, но в билдере импортирование dao360.dll приводит к ошибке!
Слышал, что еще можно как-то через IDispatch...

В общем, кто действительно знает, буду очень признателен!

P.S. Работающий код с комментариями - лучший help!!!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru