| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > DCOM |
| Автор: shilnik 22.12.2003, 06:34 |
| Доброго времени суток всем! Имеется: DCOM компонент в нем есть класс ARBLoader с методом Test, написанный на VB6, установлен на сервере. Для клиента от него есть VBR и TLB файлы. Необходимо: в делфях на клиенте запустить метод Test класса ARBLoader. Выполняю Const GUID_Loader:TGUID = '{----------}' GUID_LoaderI:TGUID = '{----------}' type IARBLoader=interface procedure Test; end; ... var oLoader:IUnknown; ARBLoader:IARBLoader; nRet:Integer; begin oLoader:=CreateRemoteComObject('OMSSQL1',GUID_Loader); nRet:=oLoader.QueryInterface(GUID_LoaderI,ARBLoader); If nRet=0 Then ARBLoader.Test; Здесь вылезает ошибка что-то про доступ и показывает код в ассемблере oLoader:=nil; Подскажите в чем я не прав. ПАЖА-А-АЛСТА. |
| Автор: Unregistered 22.12.2003, 07:39 |
| из tlb сделай pas через import type library и его юзай. |
| Автор: shilnik 22.12.2003, 08:37 |
| Pas я сделал, подключил к проекту. Дальше делаю: unit Unit1; interface uses ..., ARBLoader_TLB; type TForm1 = class(TForm) ... var Form1: TForm1; ARBLoader:CoclsARBLoad; IARBLoader:_clsARBLoad; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin IARBLoader:=ARBLoader.CreateRemote('infchag2kpro'); ---Ошибка 'Access violation at address _______ in module Project1.exe. Read of address 00000000 IARBLoader.Test; end; end. Что здесь не так? |
| Автор: Unregistered 22.12.2003, 09:56 |
| в var объяви интерфейс который используешь var ARBLoader:IARBLoader; .......далее ArbLoader:=CoARBLoader.createremote('имя_удаленного_компутера'); ArbLoader.Test; должно все работать. |
| Автор: Unregistered 22.12.2003, 10:07 |
| если этот ArbLoader зарегистрирован и у тебя и на компе где хочешь вызвать его методы. А также настроен этот самый DCOM |
| Автор: shilnik 22.12.2003, 11:17 |
| Все заработало, спасибо. :-) (``) |