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

Еще одна непонятка

Добавлено: 16 фев 2015, 20:49
Maverick
Коллеги, я наверное, уже замучил вас, но еще две проблемки нарисовались
Проблема номер раз.
Перекомпилирую кусок стандартного интерфейса, в котором используется ф-я GetDocBarCode. Данная ф-я является функцией C_COMMON::o$RepBarCode, вызывается явно, без использования объектной модели:
т.е. используется прямой вызов

Код: Выделить всё

res:=GetDocBarCode (TiDkGal, cSoprDoc)
а не реализация через объект

Код: Выделить всё

var iIRBC : RepBarCode;
res:=iRBC.GetDocBarCode (TiDkGal, cSoprDoc)
В проекте через OpenResource, естественно, подключается c_common.res.
Однако, все равно получаю ошибку, что такая ф-я не найдена.

Проблема номер два.
Компилирую интерфейс (принадлежит L_SF), у которого есть в описании прототипа в качестве родителя используется интерфейс ExportDoc из L_COMMON.
P.VIH

Код: Выделить всё

#Component L_SF
ObjInterface objMyPrint;
...
End;

VipInterface myPrintKPP(ExportDoc) implements ObjMyPrint  LICENSED (FREE);
Public:
...
End;
P.VIP

Код: Выделить всё

#include p.vih
#Component L_SF
Interface myPrintKPP;
...
End. 
При компиляции получаю следующее:
1) Предупреждение: Родительский интерфейс ExportDoc из другого компонента L_COMMON не будет пересобран
2) Ошибка: Используйте заголовочные файлы с описанием прототипов интерфейсов

С чем сии глюки связаны и как их победить?

Re: Еще одна непонятка

Добавлено: 17 фев 2015, 10:12
edward_K
1 вопрос - одна тема.
по последнему

Код: Выделить всё

#include ExportDoc.Vih
...
#Component L_SF
ObjInterface objMyPrint(L_Common::ObjExportDoc);
//============
End; 
VipInterface myPrintKPP(L_Common::ExportDoc) implements ObjMyPrint  LICENSED (FREE);

как то так.
По 2. Попробуйте зацепить RepBarCode.vih - там она объявлена как static

Re: Еще одна непонятка

Добавлено: 17 фев 2015, 15:28
Maverick
Спасибо за советы. В явном виде не помогло, но повернуло мозги в нужном направлении.
Решение проблемы раз
GetDocBarCode заюзал через объектную модель, полцепив инклюдом соответствующий VIH, объявив переменную типа этот интер и все обращения к -фии переписал через нее
Решение проблемы два
1. На предупреждение о том, что не будет пересборки ExportDoc забил, пусть во время работы юзает то, что есть в стандартных ресурсах
2. Ошибка с вышеописанными не связана, по логам посмотрел - компилер ругался на интер, загружавшийся через LoadVipRef. Проблему решил тупой пересборкой вызываемого интерфейса раньше интерфейса, в котором он вызывается.

Re: Еще одна непонятка

Добавлено: 25 фев 2015, 05:39
LaaLaa
Если есть конструкция GLOBAL

Inc\GloFuncs.inc

Код: Выделить всё

Global F_KatDoc::KatDocName
     , F_KatDoc::TiDkInfo
     ...
     , C_COMMON::EanBarCode
     , C_COMMON::RepBarCode
     ;
то статические функции можно вызвать без указания имени объекта.

Re: Еще одна непонятка

Добавлено: 25 фев 2015, 11:18
Maverick
Спасибо, Михаил. Уже задействовал, помогло ))