Компонентная принадлежность
Добавлено: 27 сен 2007, 11:45
Приветствую!
Не могу победить проблему:
Есть проект, в котором, кроме наличия других файлов с формами отчетов, описаниями таблиц и интерфейсов, есть два следующих файла
XEXTRATTR.VIH
XEXTRATTR.VPP
При компиляции проекта выдает ошибку: "не задано имя компонента, компонентная принадлежность таблиц учитывыться не будет" и указывает на начало VPP файла (interface XExtrAttr). Если указываю компонент явно, без "#ifdef ComponentVersion", то компилятор выдает другую ошибку: "Компонент C_ExtClass не имеет ни одной таблицы в словаре..."
После двухдневных поисков по форуму и докам, и безрезультатного применения найденных решений я пришел к тем же результатам.
Может я ошибаюсь в компоненте? Или как то надо по другому описать интерфейс XExtrAttr? Вроде всё правильно сделал, не пойму, что ему не нравится...
После компиляции проекта ресурс формуруется, но после подключения другой интерфейс, идущий в этом проекте вместе с ними, не виден в списке интерфейсов.
Помогите, мне уже самому интересно стало.
Не могу победить проблему:
Есть проект, в котором, кроме наличия других файлов с формами отчетов, описаниями таблиц и интерфейсов, есть два следующих файла
XEXTRATTR.VIH
Код: Выделить всё
#ifndef __XEXTRATTR
#define __XEXTRATTR
#endif
#ifndef _ExtAttr_Func
#define _ExtAttr_Func
#ifdef ComponentVersion
#component "C_ExtClass"
#endif
ObjInterface ObjXExtrAttr;
Public Function sAttr(codeTable: word; crec: comp; ExAttr_Name: string): string;
Public Function doAttr(codeTable: word; crec: comp; ExAttr_Name: string): double;
Public Function datAttr(codeTable: word; crec: comp; ExAttr_Name: string): date;
End;
VipInterface XExtrAttr Implements ObjXExtrAttr
#ifdef ATL51
licensed (FREE)
#end
;
#end
Код: Выделить всё
interface XExtrAttr;
create view;
function sAttr(codeTable: word; crec: comp; ExAttr_Name: string): string;
{
var cAttrNam : comp;
if getfirst AttrNam where ((codeTable == AttrNam.wTable and ExAttr_Name == AttrNam.Name)) = tsOk
{
cAttrNam := AttrNam.nrec;
if getfirst AttrVal where ((cAttrNam == AttrVal.cAttrNam and CodeTable == AttrVal.wTable and crec == AttrVal.cRec)) = tsOk
sAttr := AttrVal.vString;
else
sAttr := '';
}
else
sAttr := '';
}
function doAttr(codeTable: word; crec: comp; ExAttr_Name: string): double;
{
var cAttrNam : comp;
if getfirst AttrNam where ((codeTable == AttrNam.wTable and ExAttr_Name == AttrNam.Name)) = tsOk
{
cAttrNam := AttrNam.nrec;
if getfirst AttrVal where ((cAttrNam == AttrVal.cAttrNam and CodeTable == AttrVal.wTable and crec == AttrVal.cRec)) = tsOk
doAttr := AttrVal.vDouble;
else
doAttr := 0.0;
}
else
doAttr := 0.0;
}
function datAttr(codeTable: word; crec: comp; ExAttr_Name: string): date;
{
var cAttrNam : comp;
if getfirst AttrNam where ((codeTable == AttrNam.wTable and ExAttr_Name == AttrNam.Name)) = tsOk
{
cAttrNam := AttrNam.nrec;
if getfirst AttrVal where ((cAttrNam == AttrVal.cAttrNam and CodeTable == AttrVal.wTable and crec == AttrVal.cRec)) = tsOk
datAttr := AttrVal.vDate;
else
datAttr := date(1,1,1900);
}
else
datAttr := date(1,1,1900);
}
end.
После двухдневных поисков по форуму и докам, и безрезультатного применения найденных решений я пришел к тем же результатам.
Может я ошибаюсь в компоненте? Или как то надо по другому описать интерфейс XExtrAttr? Вроде всё правильно сделал, не пойму, что ему не нравится...
После компиляции проекта ресурс формуруется, но после подключения другой интерфейс, идущий в этом проекте вместе с ними, не виден в списке интерфейсов.
Помогите, мне уже самому интересно стало.
