Форум: "Прочее";
Текущий архив: 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.48 MB
Время: 0.049 c