Компонент
TDCOMConnection
Компонент TDCOMConnection предоставляет транспорт на основе технологии Distributed COM и применяется в основном для организации транспорта в рамках локальной сети.
Для настройки соединения DCOM в первую очередь необходимо задать имя компьютера, на котором функционирует сервер приложений. Для компонента TDCOMConnection это должен быть зарегистрированный сервер Автоматизации. Имя компьютера задается свойством
property ComputerName: string;
Если оно задано правильно, в списке свойства
property ServerName: string;
в Инспекторе объектов можно выбрать один из доступных серверов. При выборе сервера также автоматически заполняется свойство
property ServerGUID: string;
Причем для успешного соединения клиента с сервером приложений оба свойства должны быть заданы в обязательном порядке. Только имя сервера или только его GUID не обеспечат правильный доступ к удаленному объекту СОМ.
Открытие и закрытие соединения осуществляется свойством
property Connected: Boolean;
или методами
procedure Open/procedure Close;
соответственно.
Для организации передачи данных между клиентом и сервером компонент TDCOMConnection предоставляет интерфейс IAppServer
property AppServer: Variant;
который также может быть получен методом
function GetServer: lAppServer; override;
Свойство
property ObjectBroker: TCustomObjectBroker;
позволяет использовать экземпляр компонента TsimpleObjectBroker для получения списка доступных серверов по время выполнения (см. ниже).
Методы-обработчики компонента TDCOMConnection представлены в табл. 20.1.
Таблица 20.1. Методы-обработчики событий компонента TDCOMConnection
Объявление |
Описание |
property Af terConnect: TNotifyEvent; |
Вызывается после установления соединения |
property AfterDisconnect: TNotifyEvent; |
Вызывается после разрыва соединения |
property BeforeConnect: TNotifyEvent; |
Вызывается перед установлением соединения |
property BeforeDisconnect: TNotifyEvent; |
Вызывается перед разрывом соединения |
type TGetUsernameEvent = procedure ( Sender : TOb j ect ; var Username: string) of object; property OnGetUsername : TGetUsernameEvent ; |
Вызывается непосредственно перед появлением диалога удаленной авторизации пользователя. Для этого свойство LoginPrompt должно иметь значение True. Параметр Username может содержать имя пользователя по умолчанию, которое появится в диалоге |
type TLoginEvent = procedure ( Sender: TOb j ect; Username, Password: string) of object; property OnLogin: TLoginEvent; |
Вызывается после открытия соединения, если свойство LoginPrompt имеет значение True. Параметры Username и Password содержат имя пользователя и пароль, введенные при авторизации |
Когда тот или иной физик использует понятие "физический вакуум", он либо не понимает абсурдности этого термина, либо лукавит, являясь скрытым или явным приверженцем релятивистской идеологии.
Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.
Для защиты релятивизма Поль Дирак ввел афизическое и алогичное понятие отрицательной энергии, а затем и существование "моря" двух компенсирующих друг друга энергий в вакууме - положительной и отрицательной, а также "моря" компенсирующих друг друга частиц - виртуальных (то есть кажущихся) электронов и позитронов в вакууме.
Однако такая постановка является внутренне противоречивой (виртуальные частицы ненаблюдаемы и их по произволу можно считать в одном случае отсутствующими, а в другом - присутствующими) и противоречащей релятивизму (то есть отрицанию эфира, так как при наличии таких частиц в вакууме релятивизм уже просто невозможен). Подробнее читайте в FAQ по эфирной физике.