Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.07.12;
Скачать: CL | DM;

Вниз

TAdoConnection в DLL   Найти похожие ветки 

 
Rimdus   (2009-05-19 08:57) [0]

Добрый день!

Не удается пеедать 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-19 09:09) [1]


> ADOQuery1.Connection:=TADOConnection(ADOConnectionGlobal);


Зачем это приведение типа ?


 
Palladin ©   (2009-05-19 09:15) [2]


> Не удается пеедать TAdoConnection

Кому пеедать и от кого?


 
Slym ©   (2009-05-19 09:51) [3]

Rimdus   (19.05.09 8:57)
Build with runtime packages


 
Rimdus   (2009-05-19 10:15) [4]

Palladin ©   (19.05.09 09:15)
Из основного модуля программы в dll, где находится компонент TAdoQuery

Сергей М. ©   (19.05.09 09:09)
> Зачем это приведение типа ?

ADOQuery1.Connection:=ADOConnectionGlobal;

Так тоже не работает

Slym ©   (19.05.09 09:51)
> Build with runtime packages

Результата не дало.


 
Сергей М. ©   (2009-05-19 10:28) [5]


> Rimdus   (19.05.09 10:15) [4]


> Так тоже не работает


Если ни так ни сяк не работает, то зачем приведение типа ? Зачем лишние буковки писать ?)

Если

> Build with runtime packages
>
> Результата не дало.


значит либо Con = nil либо Con.ConnectionString = ""

Что собссно и следует из сообщения

Missing Connection or Connection String


 
Ega23 ©   (2009-05-19 10:31) [6]

Нафига тебе в DLL коннект передавать??? Передавай ConnectionString, а в DLL уже отдельный коннект создавай.
Не, конечно, если ты мазохист, то тогда я свой вопрос и совет отзываю.


 
Rimdus   (2009-05-19 10:32) [7]

< Сергей М. ©   (19.05.09 10:28)
< значит либо Con = nil либо Con.ConnectionString = ""

Если это так, то значит как то не так надо передавать? Вопрос как?
То что передаю именно "живой" объект с ConnectionString <> "" - это точно, т.к. перед этим пользуюсь им в exe модуле и ошибок не возникает.


 
Rimdus   (2009-05-19 10:34) [8]

> Ega23 ©   (19.05.09 10:31) [6]
>Нафига тебе в DLL коннект передавать??? Передавай ConnectionString, а в >DLL уже отдельный коннект создавай.
>Не, конечно, если ты мазохист, то тогда я свой вопрос и совет отзываю.

Очень нужно пользоваться именно одним коннектом, т.к. в p-таблица по spid лежат нужные данные, такова задуманная архитектура.


 
Медвежонок Пятачок ©   (2009-05-19 10:34) [9]

коннекшн стринг - длинная строка, несмотря на то, что это свойство класса.
на нее действуют все заморочки с передачей длинных строк в/из длл.


 
Сергей М. ©   (2009-05-19 10:35) [10]


> То что передаю именно "живой" объект с ConnectionString
> <> "" - это точно


Значит Build with runtime packages у тебя = false.
А д.б True и в хост-приложении и в dll-модуле.

И вообще - экий ты упрямый).. Не так давно, помнится, тебе разжевывали про bpl vs dll, почему у тебя по сей день формы в dll фигурируют ?


 
Ega23 ©   (2009-05-19 10:36) [11]


> Вопрос как?


Начать надо с попытки понять: а что такое dll? Как оно работает? Что такое менеджер памяти? Что такое RTTI и что такое строка? Что такое счётчик ссылок на строку?
И вот уже потом задаться вопросом: а для чего мне нужна dll в качестве архитектурного решения разработки приложения?


 
Плохиш ©   (2009-05-19 10:45) [12]


> Очень нужно пользоваться именно одним коннектом, т.к. в
> p-таблица по spid лежат нужные данные

Какая связь между этими фразами?
Может пора основы теории баз данных почитать?


 
Slym ©   (2009-05-19 10:53) [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 12:14) [14]

и не даст.
длл теперь надо превратить в bpl


 
Игорь Шевченко ©   (2009-05-19 12:27) [15]


> длл теперь надо превратить в bpl


а что, если DLL и хост собрать с bpl, разве это не поможет ? Обязательно надо из DLL BPL делать ? Это только с ADO такие странности ?


 
Rimdus   (2009-05-19 13:55) [16]

Собственно Сергей М. ©   (19.05.09 10:28) [5]
был прав. Решилось все с помощью установки директивы stdcall. Как-то я ее забыл написать :)))
Теперь нормально передется и работает без всяких "Build with runtime packages" и дополнительных модулей.
Всем спасибо!


 
Сергей М. ©   (2009-05-19 14:00) [17]


> Сергей М. ..  был прав. Решилось все с помощью установки директивы stdcall.


Где я говорил про stdcall ?)
Строго говоря, не нужна она в твоей ситуации, НИГДЕ не нужна.
И решение, если уж на то пошло, не в установке этой недостающей директивы, а в удалении имеющейся)


 
Rimdus   (2009-05-19 16:57) [18]

>Сергей М. ©   (19.05.09 14:00) [17]
>Где я говорил про stdcall ?)
>Строго говоря, не нужна она в твоей ситуации, НИГДЕ не нужна.
>И решение, если уж на то пошло, не в установке этой недостающей >директивы, а в удалении имеющейся)

>>>> значит либо Con = nil либо Con.ConnectionString = ""

Вот как раз из-за отсутствия stdcall
Con был равен nil, т.е. видимо параметры передавались не в той последовательности


 
Ega23 ©   (2009-05-19 17:06) [19]


> Теперь нормально передется и работает без всяких "Build
> with runtime packages" и дополнительных модулей.


Потерпи чуть-чуть, скоро начнётся. Всякое.  :)))


 
Сергей М. ©   (2009-05-19 17:12) [20]


> Вот как раз из-за отсутствия stdcall


> параметры передавались не в той последовательности


Так а за каким же шишом ты передаешь их в другой последовательности-то ?
Передавай безо всяких stdcall, тогда и для приема stdcall не понадобится)
Ты же бездумно влупил этот stdcall в хост-приложении, а потом пришлось влупить его еще и в dll, в то время как он тебе нафих не нужен ни там ни сям)


 
Rimdus   (2009-05-19 18:46) [21]

>Сергей М. ©   (19.05.09 17:12) [20]
>Так а за каким же шишом ты передаешь их в другой >последовательности-то ?
>Передавай безо всяких stdcall, тогда и для приема stdcall не >понадобится)
>Ты же бездумно влупил этот stdcall в хост-приложении, а потом >пришлось влупить его еще и в dll, в то время как он тебе нафих не >нужен ни там ни сям)

Ничего подобного, в хост-приложении не было и в длл не было stdcall


 
Ega23 ©   (2009-05-19 18:57) [22]


> Ничего подобного, в хост-приложении не было и в длл не было
> stdcall


Сказки не рассказывай.


 
Сергей М. ©   (2009-05-19 19:54) [23]


> Rimdus   (19.05.09 18:46) [21]


Ну ты и крендель))

А зачем же тогда добавил, если не было ? Да еще и на меня сослался, мол, я тебе насоветовал ?)


 
Rimdus   (2009-05-20 07:23) [24]

Да. Действительно. Убрал и в ехе и в длл, все равно работает )))


 
Плохиш ©   (2009-05-20 11:00) [25]

Кодирование методом тыка...



Страницы: 1 вся ветка

Текущий архив: 2009.07.12;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.01 c
15-1241607255
serg_new_
2009-05-06 14:54
2009.07.12
GSM modem


2-1242899868
Int23
2009-05-21 13:57
2009.07.12
Как скопировать содержимая TBitmap в Pointer


2-1242818112
evgenij
2009-05-20 15:15
2009.07.12
Получить текст вводимый в DBGrid


15-1241808946
TUser
2009-05-08 22:55
2009.07.12
Играем в ассемблер


15-1241778394
PROgrammist
2009-05-08 14:26
2009.07.12
Ошибка при запуске Delphi.