Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];

Вниз

Так всё-таки: как канонически правильно передавать объекты   Найти похожие ветки 

 
Ega23 ©   (2007-11-15 16:02) [0]

в dll?
Допсутим, надо передать в dll ADOConnection.


 
Сергей М. ©   (2007-11-15 16:04) [1]

О "канонах" разработчика какой платформы разработки идет речь ?


 
Ega23 ©   (2007-11-15 16:06) [2]

Windows, delphi 7.
Dll также используется исключительно из D7. (т.е. никаких других стредств разработки)


 
Юрий Зотов ©   (2007-11-15 16:08) [3]

> Ega23 ©   (15.11.07 16:06) [2]

> Dll также используется исключительно из D7. (т.е. никаких других
> стредств разработки)

Тогда компилячь exe и все dll с включенными run-time пакетами и ни о чем не беспокойся.


 
Сергей М. ©   (2007-11-15 16:09) [4]


> Dll также используется исключительно из D7


Пара "канонических" контрвопросов

1. Нахрена нужна такая dll ?
2. Если не нахрена, то почему не bpl ?


 
Черный Шаман   (2007-11-15 16:10) [5]


> Ega23 ©   (15.11.07 16:06) [2]
>
> Windows, delphi 7.
> Dll также используется исключительно из D7. (т.е. никаких
> других стредств разработки)


Тогда все равно как передавать, в равно ссылка на адрес памяти. Главное чтобы тип ADOConnection в программе и dll явно совпадал по коду.


 
Сергей М. ©   (2007-11-15 16:13) [6]


> Ega23


"Каноны" здесь просты:

Модули, содержащие вызывающий и вызываемый код, должны использовать один и тот же экз-р RTL


 
Ega23 ©   (2007-11-15 16:17) [7]


> 2. Если не нахрена, то почему не bpl ?


Т.е. New Package, инсталлировать, а уже exe собирать с ним, так?
Вопрос тогда такой: а exe обязательно с rut-time пакетами в данной ситуации компилять, или нет?
Насколько я понимаю - не обязательно (но может я что-то не так понимаю)?


 
Сергей М. ©   (2007-11-15 16:20) [8]

Компиляция с рантайм-пакетами дает соблюдение главного "канона" - см.[6]


 
Reindeer Moss Eater ©   (2007-11-15 16:21) [9]

А нету в адо что-нибудь типа глобального дефолтного коннекшена для процесса? Тогда и передавать ничего не надо.


 
KSergey ©   (2007-11-15 16:21) [10]

> Черный Шаман   (15.11.07 16:10) [5]
> Тогда все равно как передавать, в равно ссылка на адрес памяти.

Это да.
Однако не криво бы еще общий менеджер памяти иметь.
Впрочем, в частных случаях - вполне может и проканает, особенно учитывая, сто TADOConnection  - лишь обертка над COM-вызовами.

К стати, если опять же о частностях говорить - то видимо надо либо вообще все в проскость COM-интерфейсов в DLL переводить, либо передавать если не ошибаюсь TADOConnection.ConnectionObject и в dll порождать экземпляр дельфового объекта TADOConnection с насильным присвоением ему этого TADOConnection.ConnectionObject.
Как - не скажу, но вроде где-то это мне попадалось или по коду вроде видел, что вроде можно туды его подпихнуть.


 
KSergey ©   (2007-11-15 16:23) [11]

> Ega23 ©   (15.11.07 16:17) [7]
> Вопрос тогда такой: а exe обязательно с rut-time пакетами
> в данной ситуации компилять, или нет?

Обязательно, ибо только это дает, как верно указано, соблюдение "главного канона" [6]


 
clickmaker ©   (2007-11-15 16:23) [12]


> TADOConnection с насильным присвоением ему этого TADOConnection.ConnectionObject

так и коннекшн стринг можно передавать в виде pchar


 
Ega23 ©   (2007-11-15 16:23) [13]


> Тогда все равно как передавать, в равно ссылка на адрес
> памяти. Главное чтобы тип ADOConnection в программе и dll
> явно совпадал по коду.


ADOConnection - это я для примера. Я же в Dll могу передать TMyADOConnection, который, хоть и в принципе, потомок, но всё-таки другой. И тут уже адреса будут совсем другие, насколько я понимаю.


 
Reindeer Moss Eater ©   (2007-11-15 16:25) [14]

так и коннекшн стринг можно передавать в виде pchar

Много dll - много сессий?


 
KSergey ©   (2007-11-15 16:27) [15]

> Ega23 ©   (15.11.07 16:23) [13]
> ADOConnection - это я для примера. Я же в Dll могу передать
> TMyADOConnection, который, хоть и в принципе, потомок, но
> всё-таки другой. И тут уже адреса будут совсем другие,

Вооще-то если вызываемый метод будет пользовать только в рамках базового класса - то все отлично поканает. На том и стоим.
Только не стоит все же без общего менедрера памяти. Огребешь всяких дурацких багов - страшное дело.
К стати, run-time пакеты - они только по началу страшны :)


 
KSergey ©   (2007-11-15 16:28) [16]

> clickmaker ©   (15.11.07 16:23) [12]
> так и коннекшн стринг можно передавать в виде pchar

Да, но это все же будет физически второй коннекшн, я думаю. Хотя адошка может и закешировать все по страшному. ADO.NET - точно бы закешировала, стопудово.


 
Черный Шаман   (2007-11-15 16:57) [17]


>
> Ega23 ©   (15.11.07 16:02)
>
> в dll?
> Допсутим, надо передать в dll ADOConnection.


А может проще передавать строку подключения через PAnsiChar/PwideChar


 
clickmaker ©   (2007-11-15 17:30) [18]


> как канонически правильно передавать объекты

сериализация. XML
:)



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

Форум: "Прочее";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.047 c
15-1194254566
Angelka
2007-11-05 12:22
2007.12.16
glscene


15-1195062078
Dark
2007-11-14 20:41
2007.12.16
Дополнительные символы


2-1195740377
Ученик_2008
2007-11-22 17:06
2007.12.16
Объявление дин. массива в Pascal!


15-1195422004
Черный Шаман
2007-11-19 00:40
2007.12.16
Поможем российскому Стивену Кингу


2-1195745591
Fraider
2007-11-22 18:33
2007.12.16
Лист бокс со скошенным углом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский