TADOConnection, наряду со всеми другими объектами TAdoxxx определены в AdoDB.PAS, «сидит на вершине» и использует объекты, которые создаются в ADO подсистемы Windows. Если вы посмотрите на исходный блок D7 AdoInt.Pas, это будет импортировать библиотеку типов из C: \ PROGRAM FILES \ COMMON FILES \ SYSTEM \ ADO \ MSADO15.DLL. Один из интерфейсов объекта , определенных в нем, является _Connection, и это экземпляр этого, который выполняет всю работу для TAdoConnection.
Некоторые из интерфейсных объектов, определенных в AdoInt.Pas работать через границы процессов, наиболее особенно RecordSet
объекта, который является объектом ADO уровня, что промежуточные соединения между сервером и Дельфи стороне AdoCustomDataset потомков как TADOQuery, и т. д. В книге Дэвида Сеппы «Программирование ADO» (Microsoft Press) есть глава, и я написал тестовый COM-сервер, который делает объект RecordSet доступным через COM, и он отлично работает.
Однако, насколько я смог установить эксперимент, невозможно, чтобы 0doDonnection или его основополагающий объект ConnectionObject выполняли через процесс границы с использованием COM.
Но если то, что изначально мотивировало ваши мысли в этом направлении, было просто утомительным тем, что нужно постоянно настраивать AdoConnections таким же образом в каждом новом проекте, лично то, что я хотел бы сделать, это просто создать пользовательский потомок TAdoConnection, который устанавливает свойства, которые вы всегда используете в коде, а затем зарегистрируйте его с помощью Delphi, чтобы он отображался на палитре компонентов.
Вы не можете просто сделать класс Delphi в COM-объект. COM возвращает только определенные типы, которые он поддерживает, и класс Delphi не является одним из них. На первый взгляд, то, что вы пытаетесь сделать, кажется гораздо более сложной задачей, чем того стоит. Почему, по-вашему, вам нужно «разделить» AdoConnection между приложениями? Какую пользу вы ожидаете получить? – MartynA
@MartynA: у нас есть базовое приложение, которое нужно запускать все время. Поэтому я хочу создать объект TADOConnection и подключиться к базе данных в базовом приложении и использовать одно и то же соединение во всех других приложениях. – DelphiLearner
Ты знаешь о COM "marshalling"? – MartynA