Страница 1 из 1

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

Добавлено: 05 июл 2007, 09:19
Алексей
Объектный интерфейс ObjGetKau

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

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

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

При компиляции ресурс F_GetAn.res подключаю (в конфиге через опенресорсес)

Добавлено: 05 июл 2007, 10:03
edward_K
масло маслянное
если наименование типа совпадает с именем фейса то никаких load вообще не надо, либо LoadVipInterface, но не GetVipinterface.
для начала попробуйте закоментарить все 3 строки.

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

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

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

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

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

А вы Сами использовали объектные интерфейсы в 8.1 ?

Добавлено: 05 июл 2007, 11:29
edward_K
добавте в проект
#ifdef Atl51
#define Licensed_Free Licensed(Free)
#else
#define Licensed_Free
#end
и еще
чего то мне кажется что у вас не идет определение компоненты в vih
#ifdef ComponentVersion
#Component "F_GetAn"
#end
сделайте там ошибку.
вообще по хорошему свои фейсы нужно объявлять в отдельном файле и компилить сначала его. а потом сам фейс, иначе фейс могет уйти в другую компоненту.

Добавлено: 05 июл 2007, 16:46
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

Добавлено: 05 июл 2007, 20:48
edward_K
InitServKAU, DoneServKAU на 8.10 не нужны( и они не объявлены для vip) - они сами запускаются при вызове функций из g_txo.dll
причина все таки в том что при компиляции vih объявление компоненты не прошло.
надо в проект еще добавить вам
#define ComponentVersion
а еще лучше конечно все inc подцепить -через
#include galnet.inc end;
если они у вас присутствуют.

Добавлено: 06 июл 2007, 09:37
Алексей
Было
#ifdef ComponentVersion
#Component "F_GetAn"
#end

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

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

Никаких Initservkau & doneserkau не надо.
Даже GetVipInterface и FreeVipInterface можно не делать, делается автоматом.

Добавлено: 06 июл 2007, 09:59
edward_K
вы запаритесь все vih менять
проще все таки один раз define определить в своем(!) проекте.
или все таки подцепить galnet.inc
все инки входят в состав установки 810 - frm\galFrm.rar
- тогда будут все нужные константы и define.
либо хотя бы predefs.inc

Добавлено: 15 янв 2008, 17:20
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" есть. Почему еще может не работать?

Добавлено: 15 янв 2008, 17:50
Nikos
Вопрос снимается. #include GetKau.vih брался из другого каталога (старого)