Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DAO 3.5


Страницы:   1 2

Joy ©   (2005-10-13 13:32:00) 

Приветствую.
Пытаюсь использовать DAO...
При попытке создать COM-объект из этой библиотеки вылается "OleSysError "Класс не лицензирован для использования" ".
Что бы это значило и как его "лицензировать" то?
Из того же VC++ все ведь работает(там правда свой класс поверх COM, ну а я импротирую из DLL(TLB)).


Joy   (2005-10-17 12:16:00) [21]

> осталось еше сам вызов проверить
так вот как раз на вызове
CreateComObject(CLASS_DBEngine)
или
CreateOleObject('{00000010-0000-0010-8000-00AA006D2EA4}')
оно и выдает ошибку...


sniknik   (2005-10-17 09:03:00) [22]

> так то ведь прально?
возможно. параметр (сгенеренное в модуль dao_tlb.pas) списан верно. осталось еше сам вызов проверить и можно за сочинение (такие "художественные" отступления/аллегории только в литературе приветствуются) оценку ставить.


Joy   (2005-10-17 08:20:00) [23]

Этта...сорри. я не то имел ввиду под  _"DBEngine_GUID"_ - имеется ввиду вместо него GUID... точнее CLASS_DBEngine
описан он в dao_tlb.pas(сгенерированый при импорте из dao350.dll)

CLASS_DBEngine: TGUID = '{00000010-0000-0010-8000-00AA006D2EA4}';

и соответственно
CreateComObject(CLASS_DBEngine)
или
CreateOleObject('{00000010-0000-0010-8000-00AA006D2EA4}')

так то ведь прально?(собсно в сгенерированном модуле так же используется)

а по поводу ADO - ну не факт что оно будет на старых машинах с win95/98 - а такие довольно часто еще появляются...


Digitman   (2005-10-14 15:05:00) [24]


> _"DBEngine_GUID"_


где и как этот ид-р объявлен ? откуда взялся ? какой идиот посоветовал тебе использовать кавычки в имени идентификатора ?


sniknik   (2005-10-14 14:58:00) [25]

> я это делаю просто CreateComObject(_"DBEngine_GUID"_)
это скорее всего неверная запись (нет такого гуида _"DBEngine_GUID"_, возможно он с чемто совпал(ты взял не тот) и он "невыполнимого типа" поэтому и вышеприведенная ошибка)

p.s. посты [1], [3] теперь можно не рассматривать, там еще предполагал что "все делается правильно" (после [7] это уже невозможно).


zx   (2005-10-14 14:54:00) [26]

а почему не ADO, с ним вроде проще, да и стоит оно обычно уже ... и компоненты есть ...


Joy   (2005-10-14 14:14:00) [27]

вопчем описание всей задачи

пишется инсталлятор для готовой программы(пожалуйста не нужно говорить про готовые инсталляторы - так надо =) тем более фунцию установки она уже успешно делает)
после установки неободимых файлов в числе других операций нужно открыть мдб файл и в таблицу записать одну запись...

да...можно конечно искать разные версии...
но дело то в другом - я не могу создать ни одного объекта DAO ни от 3.6 ни 3.5.. хотя другие программы использующие дао работают...(тот же office)

то есть мне кажется дело тут в чем то другом(не исключаю и "кривые_руки.sys")
кто добрый - если не солжно - простой код для создания того же DBEngine ?
я это делаю просто CreateComObject(_"DBEngine_GUID"_)
_"DBEngine_GUID"_ - guid из юнита созданного импортом dao350.dll
ведь вроде же ничего больше не надо?


Digitman   (2005-10-14 10:16:00) [28]


> Joy   (14.10.05 06:25) [5]


а тебе какая разница-то, DAO какой версии предоставит свой сервис твоей программе ?

инсталлировать DAO 3.5 ты конечно вправе, но смысл инсталляции тут, imho, будет иным - для работы твоей программы в системе должен присутствовать хотя бы один DAO-движок ..

поэтому при старте программы обратись к реестру, выбери из него все регистр.записи для всех потенциально инсталлированных версий DAO, проанализируй/отсортируй список, далее в цикле по порядку убывания номеров обнаруженных версий (4.0 -> 3.6 -> 3.5) пытайся создать соотв.COM-объект ... условие выхода из цикла - первый же успешно созданный объект


Joy   (2005-10-14 06:25:00) [29]

UP
ну поможите хоть ктонить....


Joy   (2005-10-13 15:15:00) [30]

нет. это уже проверено. пока не поставишь 3.5 - прога не работает.
собсно по этому мне и приходится использовать 3.5 - она будет на момент работы моей программы...

какие еще варианты? что вообще означает сообщение о лицензии...?


sniknik   (2005-10-13 14:52:00) [31]

а, значит 3.6 есть...

> программа которая использует DAO 3.5 (писаная на VC++) прекрасно работает
не факт при наличии 2-х dll. попробуй удалить dao350.dll и запустить программу, на 95% уверен она и без нее будет работать.


Joy   (2005-10-13 14:19:00) [32]

несколько "фактов"...

в delphi в списке registered type libraries(и ActiveX Controls) нет ни 3.5 ни 3.6
(пользуюсь кнопкой Add)

в каталоге \Program Files\Common Files\Microsoft Shared\DAO\ есть dao350 и dao360.dll

dao 3.5 ставлю сам инсталлятором
(можно еще и вручную копировать файлы куда надо по MS'вскому докумету - пробовал - разницы никакой, тока что в DAO добавляется файл dao3525.tlb)

программа которая использует DAO 3.5 (писаная на VC++) прекрасно работает

при импорте
TLB файла - пишет версию 3.5
dao350.dll - 4.0
dao360.dll - 5.0

может что то поможет для ответа...


sniknik   (2005-10-13 14:07:00) [33]

возможно установка 3.6 "закрыла" более старую версию себя? (посмотри есть такой? и если есть сделай TLB из него, чего получится?)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо