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

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

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

Ответить
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

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

Сообщение 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) Ошибка: Используйте заголовочные файлы с описанием прототипов интерфейсов

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

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

Сообщение 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
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

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

Сообщение Maverick »

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

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

Сообщение LaaLaa »

Если есть конструкция GLOBAL

Inc\GloFuncs.inc

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

Global F_KatDoc::KatDocName
     , F_KatDoc::TiDkInfo
     ...
     , C_COMMON::EanBarCode
     , C_COMMON::RepBarCode
     ;
то статические функции можно вызвать без указания имени объекта.
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

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

Сообщение Maverick »

Спасибо, Михаил. Уже задействовал, помогло ))
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Ответить