![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TAdoConnection в DLL [MSSQL]
Rimdus © (2009-05-19 08:57:00)Добрый день!
Не удается пеедать TAdoConnection - действующий конект приложения к БД ms sql 2000.
в DLL
function ShowForm(App, form: THandle; FormName:PChar; Con:TADOConnection):Cardinal;
...
ADOConnectionGlobal:=Con; // ADOConnectionGlobal глобальная переменная
ADOQuery1.Connection:=TADOConnection(ADOConnectionGlobal);
собственно вызов
ADOQuery1.Open
Ругается: Missing Connection or Connection String
Из главного exe все работает корректно.
Плохиш (2009-05-20 11:00:00) [1]Кодирование методом тыка...
Rimdus (2009-05-20 07:23:00) [2]Да. Действительно. Убрал и в ехе и в длл, все равно работает )))
Сергей М. (2009-05-19 19:54:00) [3]
> Rimdus (19.05.09 18:46) [21]
Ну ты и крендель))
А зачем же тогда добавил, если не было ? Да еще и на меня сослался, мол, я тебе насоветовал ?)
Ega23 (2009-05-19 18:57:00) [4]
> Ничего подобного, в хост-приложении не было и в длл не было
> stdcall
Сказки не рассказывай.
Rimdus (2009-05-19 18:46:00) [5]>Сергей М. © (19.05.09 17:12) [20]
>Так а за каким же шишом ты передаешь их в другой >последовательности-то ?
>Передавай безо всяких stdcall, тогда и для приема stdcall не >понадобится)
>Ты же бездумно влупил этот stdcall в хост-приложении, а потом >пришлось влупить его еще и в dll, в то время как он тебе нафих не >нужен ни там ни сям)
Ничего подобного, в хост-приложении не было и в длл не было stdcall
Сергей М. (2009-05-19 17:12:00) [6]
> Вот как раз из-за отсутствия stdcall
> параметры передавались не в той последовательности
Так а за каким же шишом ты передаешь их в другой последовательности-то ?
Передавай безо всяких stdcall, тогда и для приема stdcall не понадобится)
Ты же бездумно влупил этот stdcall в хост-приложении, а потом пришлось влупить его еще и в dll, в то время как он тебе нафих не нужен ни там ни сям)
Ega23 (2009-05-19 17:06:00) [7]
> Теперь нормально передется и работает без всяких "Build
> with runtime packages" и дополнительных модулей.
Потерпи чуть-чуть, скоро начнётся. Всякое. :)))
Rimdus (2009-05-19 16:57:00) [8]>Сергей М. © (19.05.09 14:00) [17]
>Где я говорил про stdcall ?)
>Строго говоря, не нужна она в твоей ситуации, НИГДЕ не нужна.
>И решение, если уж на то пошло, не в установке этой недостающей >директивы, а в удалении имеющейся)
>>>> значит либо Con = nil либо Con.ConnectionString = ''
Вот как раз из-за отсутствия stdcall
Con был равен nil, т.е. видимо параметры передавались не в той последовательности
Сергей М. (2009-05-19 14:00:00) [9]
> Сергей М. .. был прав. Решилось все с помощью установки директивы stdcall.
Где я говорил про stdcall ?)
Строго говоря, не нужна она в твоей ситуации, НИГДЕ не нужна.
И решение, если уж на то пошло, не в установке этой недостающей директивы, а в удалении имеющейся)
Rimdus (2009-05-19 13:55:00) [10]Собственно Сергей М. © (19.05.09 10:28) [5]
был прав. Решилось все с помощью установки директивы stdcall. Как-то я ее забыл написать :)))
Теперь нормально передется и работает без всяких "Build with runtime packages" и дополнительных модулей.
Всем спасибо!
Игорь Шевченко (2009-05-19 12:27:00) [11]
> длл теперь надо превратить в bpl
а что, если DLL и хост собрать с bpl, разве это не поможет ? Обязательно надо из DLL BPL делать ? Это только с ADO такие странности ?
Медвежонок Пятачок (2009-05-19 12:14:00) [12]и не даст.
длл теперь надо превратить в bpl
Slym (2009-05-19 10:53:00) [13]Rimdus (19.05.09 10:15) [4]
Slym © (19.05.09 09:51)
> Build with runtime packages
Результата не дало
и приложение и dll vcl;rtl;dbrtl;vcldb;adortl;
Плохиш (2009-05-19 10:45:00) [14]
> Очень нужно пользоваться именно одним коннектом, т.к. в
> p-таблица по spid лежат нужные данные
Какая связь между этими фразами?
Может пора основы теории баз данных почитать?
Ega23 (2009-05-19 10:36:00) [15]
> Вопрос как?
Начать надо с попытки понять: а что такое dll? Как оно работает? Что такое менеджер памяти? Что такое RTTI и что такое строка? Что такое счётчик ссылок на строку?
И вот уже потом задаться вопросом: а для чего мне нужна dll в качестве архитектурного решения разработки приложения?
Сергей М. (2009-05-19 10:35:00) [16]
> То что передаю именно "живой" объект с ConnectionString
> <> '' - это точно
Значит Build with runtime packages у тебя = false.
А д.б True и в хост-приложении и в dll-модуле.
И вообще - экий ты упрямый).. Не так давно, помнится, тебе разжевывали про bplvs dll, почему у тебя по сей день формы в dll фигурируют ?
Медвежонок Пятачок (2009-05-19 10:34:00) [17]коннекшн стринг - длинная строка, несмотря на то, что это свойство класса.
на нее действуют все заморочки с передачей длинных строк в/из длл.
Rimdus (2009-05-19 10:34:00) [18]> Ega23 © (19.05.09 10:31) [6]
>Нафига тебе в DLL коннект передавать??? Передавай ConnectionString, а в >DLL уже отдельный коннект создавай.
>Не, конечно, если ты мазохист, то тогда я свой вопрос и совет отзываю.
Очень нужно пользоваться именно одним коннектом, т.к. в p-таблица по spid лежат нужные данные, такова задуманная архитектура.
Rimdus (2009-05-19 10:32:00) [19]< Сергей М. © (19.05.09 10:28)
< значит либо Con = nil либо Con.ConnectionString = ''
Если это так, то значит как то не так надо передавать? Вопрос как?
То что передаю именно "живой" объект с ConnectionString <> '' - это точно, т.к. перед этим пользуюсь им в exe модуле и ошибок не возникает.
Ega23 (2009-05-19 10:31:00) [20]Нафига тебе в DLL коннект передавать??? Передавай ConnectionString, а в DLL уже отдельный коннект создавай.
Не, конечно, если ты мазохист, то тогда я свой вопрос и совет отзываю.