Объект ObjGetKau в 8.1, не могу подключить

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Объект ObjGetKau в 8.1, не могу подключить

Сообщение Алексей »

Объектный интерфейс ObjGetKau

В общем проблема в следующем:
#include getKau.vih
.................
var iGetKau : GetKau;
................
событие:
GetVipInterface(iGetKau)
LoadVipRef(iGetKau,'ObjGetKau')
LoadVipInterface(iGetKau)

компилируется всё на ура (с одной из фукнций), НО при запуске Галактики с любой функцией идет ошибка "ExObjIfcNoLoad" - типа не найден объект в загруженных интерфейсах.

Как правильно подключать объектные интерфейсы в 8.1?
Может компоненты где надо указывать или ещё что-то?

При компиляции ресурс F_GetAn.res подключаю (в конфиге через опенресорсес)
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

масло маслянное
если наименование типа совпадает с именем фейса то никаких load вообще не надо, либо LoadVipInterface, но не GetVipinterface.
для начала попробуйте закоментарить все 3 строки.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

edward_K
закоментарил - разницы никакой.
прочитал что если объявить переменную как:
iGetKau : ObjGetKau (GetKau) new;
то инициализация происходит автоматически НО у меня при вызове метода объекта вылетает ошибка ExObjIfcNoLoad (когда не может найти объектный интерфейс в ресурсах, хотя F_GETAN.RES в репозитарии есть).

Если же объявить как
iGetKau : ObjGetKau;
То ошибка при обращении вылетает ExObjIfcNoInit - интерфейс не проинициализирован.

Если попытатся вставить туда LoadVipInterface то получаю ошибку "ExObjIfcBadVar - переменная не является ссылкой на VIP-интерфейс."
Независимо какбы не объявлял переменную.

И ещё, у меня на вих ругается на последнюю строчку
VipInterface GetKau implements ObjGetKau #Licensed_Free;
Если закоментить лисенс фри - то ругатся перестает. Отчего это не знаю, но думаю это было для старых версий

В общем ощущение такое что надо как то указать компоненту, где лежит этот объект, а как это сделать я что-то понять не могу.

А вы Сами использовали объектные интерфейсы в 8.1 ?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

добавте в проект
#ifdef Atl51
#define Licensed_Free Licensed(Free)
#else
#define Licensed_Free
#end
и еще
чего то мне кажется что у вас не идет определение компоненты в vih
#ifdef ComponentVersion
#Component "F_GetAn"
#end
сделайте там ошибку.
вообще по хорошему свои фейсы нужно объявлять в отдельном файле и компилить сначала его. а потом сам фейс, иначе фейс могет уйти в другую компоненту.
gloomy
Посетитель
Сообщения: 39
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Архангельская область ООО "Фалькон плюс"
Контактная информация:

Сообщение gloomy »

ошибка "ExObjIfcNoLoad" - не найден объект в загруженных интерфейсах возникает, потому что нет вызова функций InitServKAU, DoneServKAU
#include getKau.vih
Interface test;
...
Var iGetKau : GetKau;
...
HandleEvent
CmInit:
{ InitServKAU; ...}
CmDone:
{ DoneServKAU; ...}
End;
End.
Компилируется на 7.12 но не находит функции InitServKAU, DoneServKAU на 8.10
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

InitServKAU, DoneServKAU на 8.10 не нужны( и они не объявлены для vip) - они сами запускаются при вызове функций из g_txo.dll
причина все таки в том что при компиляции vih объявление компоненты не прошло.
надо в проект еще добавить вам
#define ComponentVersion
а еще лучше конечно все inc подцепить -через
#include galnet.inc end;
если они у вас присутствуют.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Было
#ifdef ComponentVersion
#Component "F_GetAn"
#end

Оставил только
#Component "F_GetAn"

всё заработало.

Никаких Initservkau & doneserkau не надо.
Даже GetVipInterface и FreeVipInterface можно не делать, делается автоматом.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

вы запаритесь все vih менять
проще все таки один раз define определить в своем(!) проекте.
или все таки подцепить galnet.inc
все инки входят в состав установки 810 - frm\galFrm.rar
- тогда будут все нужные константы и define.
либо хотя бы predefs.inc
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Помогите! Та же проблема. Такой интерфейс:

#include GetKau.vih
interface Proba
view;
HandleEvent
cmInit:
{
var iGetKau : GetKau;
iGetKau.ClearFilter;
}
end;
end.

GetKauMy.vih:

#component "F_GETAN"
#ifndef _GetKau_vih_Included
#define _GetKau_vih_Included
!-------------------------------------------------------------------------------
ObjInterface ObjGetKau;
Function GetMarkerName (wKau : Word) : String;
Function GetCodeKau (wIntMode : Word; var wKau : Word; var cKau : Comp) : LongInt;
Procedure ClearFilter;
Procedure SetFilter (wKau : Word; cKau : Comp);
end;
!-------------------------------------------------------------------------------
VipInterface GetKau implements ObjGetKau;
!-------------------------------------------------------------------------------
#end // GetKau_vih_Included

Компилируется без проблем, но при запуске выдает ExObjIfcNoLoad. В проекте #define ComponentVersion добавил, к тому же #component "F_GETAN" есть. Почему еще может не работать?
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Вопрос снимается. #include GetKau.vih брался из другого каталога (старого)
Ответить