![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DAO 3.5
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 из него, чего получится?)