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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2010, 16:36   #1
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию CreateComObject и CreateOleObject

собственно вопрос такой, на сервере автоматизации имеется интерфейс в нем есть процедура
Код:
procedure TIntAnalog.GetMinValue(out MinVal: Double; Index: Integer);
begin
//do somesing
end;
MinVal - возвращаемый параметр в контроллер автоматизации, так вот при таком вызове
Код:
var
  OA: Variant;
  MinVal: double;
begin
  OA := CreateOleObject('MyServer.IntAnalog');
  if varType(OA) = varDispatch then
    OA.GetMinValue(MinVal, 2);
end;
ничего не возвращается, а при таком
Код:
var
  OA: IIntAnalog;
begin
  OA := CreateComObject(CLASS_IntAnalog) as IIntAnalog; 
  OA.GetMinValue(MinVal, 2);
end;
все нормально отрабатывается. Почему???
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 14.07.2010, 16:38   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а сервер у нас кто?
COM или OLE? это немного разное.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.07.2010, 16:45   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я для доступа к методам СОМ обьектов не Variant а OleVariant использую.
Согласись логично раз ты создаешь CreateOleObject то и стоит OleVariant использовать для работы с ним.
Возможно просто тип Variant не поддерживает СОМ технологию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.07.2010, 16:51   #4
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

в том то и дело OleVariant я не могу использовать т.к. пишу через FastScript, а он не поддерживает тип OleVariant.
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 14.07.2010, 17:05   #5
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а сервер у нас кто?
COM или OLE? это немного разное.
а как это определить? я создавал интерфейс через (Automation Object)
я как бы считал что CreateComObject - раннее связывание, CreateOleObject - позднее, и от сервера это не зависит?
Не забываем говорить спасибо за помощь - это ведь так приятно

Последний раз редактировалось Sanprof; 14.07.2010 в 17:08.
Sanprof вне форума Ответить с цитированием
Ответ


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