Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2016, 20:53   #1
Дmmm
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 66
По умолчанию проблемы с COM-object

При попытке зарегистрировать СОМ-сервер средствами Дельфи выдаёт сначала "Succesfully registered ActiveX Server", а потом сразу же ошибку EOleSysError "ошибка при обращении к серверу OLE".
В реестре ID не появляется. Что не так?
Дmmm вне форума Ответить с цитированием
Старый 17.03.2016, 01:36   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Дmmm Посмотреть сообщение
При попытке зарегистрировать СОМ-сервер средствами Дельфи выдаёт сначала "Succesfully registered ActiveX Server", а потом сразу же ошибку EOleSysError "ошибка при обращении к серверу OLE".
В реестре ID не появляется. Что не так?
Код покажи. И желательно проект целиком. Ибо "потом сразу же" - очень неопределенное понятие.
northener вне форума Ответить с цитированием
Старый 17.03.2016, 21:14   #3
Дmmm
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 66
По умолчанию

проблема решилась запуском Дельфи от имени администратора.
дошел до следующей:
код интерфейса:
Igt3 = interface(IUnknown)
['{47A59DD5-F1FC-428B-BA44-1021AF88034C}']
function Set_L(P0: Double): HResult; stdcall;
function Get_R: Double; stdcall;
end;

код реализации:
type
Tgt3 = class(TTypedComObject, Igt3)
P_L: double;
protected
function Set_L(P0: Double): HResult; stdcall;
function Get_R: double; stdcall;
end;

implementation

uses ComServ, System.SysUtils, unit1;

function Tgt3.Set_L(P0: Double): HResult;
stdcall;
begin
P_L:=P0;
Result:=S_Ok;
end;
function Tgt3.Get_R: double;
begin
Result:=P_L+StrToFloat(form1.Edit1. Text);
end;

код клиента:
type
TForm3 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
iigt: Igt3;
end;

var
Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var d: double;
begin
d:=StrToFloat(edit1.Text);
iigt.Set_l(d);
d:=iigt.Get_R;
label1.Caption:=FloatToStr(d);
end;

procedure TForm3.FormShow(Sender: TObject);
begin
iigt:=Cogt3.Create;
end;

и вот на вызове в клиенте метода интерфейса из сервера возникает ошибка
Дmmm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Kernel object lalilulelo Операционные системы общие вопросы 0 17.04.2012 15:26
Ошибка при подключении к базе данных Object reference not set to an instance of an object. lowercase ASP.NET 1 20.11.2011 22:48
Object Shyt HTML и CSS 2 21.02.2011 12:04
Com Object Wizard _-Re@l-_ Общие вопросы Delphi 0 31.07.2010 16:04
OBJECT Doholyan Паскаль, Turbo Pascal, PascalABC.NET 14 06.08.2009 19:38