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

Создание интерфейсов с помощью VIP

Добавлено: 17 янв 2003, 16:20
Maxx
У меня тут такой вопрос:есть ли возможность в VIPе редактировать уже имеющийся интерфейс(используемый в гал-е) и как это сделать?

Re: Создание интерфейсов с помощью VIP

Добавлено: 17 янв 2003, 18:11
Vitas
Есть, если у тебя есть исходники стандартных интерфейсов. :)
В противном случае нет

Re: Создание интерфейсов с помощью VIP

Добавлено: 20 янв 2003, 16:50
Vitas
а хотя что-то еще есть такое типа:
Докомпиляция интерфейсов
Докомпиляция интерфейсов целиком основана на механизме наследования VIP-интерфейсов. Основное отличие состоит в том, что в новом интерфейсе невозможно добавление новых public-функций, разрешается только перегрузка существующих, а также расширение логических таблиц и обработчиков событий.

Для докомпиляции интерфейса необходимо наличие в ресурсе символьной информации (так же как и для наследования ). Однако, запись символьной информации для каждого интерфейса сильно увеличит размер ресурсного файла. Для указания интерфейсов для которых сохранять символьную информацию заведён параметр в CFG файле

Compilers.InhSaveLevel : LongInt;

InhSaveLevel Значение
0 Не сохранять символьную информацию. Дальнейшее наследование и докомпиляция невозможны.
1* Сохранять информацию только для интерфейсов, имеющих прототип, т.е. описаных ранее как VipInterface.
2 Сохранять информацию только для интерфейсов, не имеющих прототипа, т.е. обычные интерфейсы.
3 Сохранять информацию для всех интерфейсов.
* - значение по-умолчанию
Для описания докомпиляции используется следующая конструкция

alter interface <имя_интерфейса>
[ ( [ fix ] <служебная_информация> ) ]
<заголовок> ...

Т.е. к обычному описанию интерфейса добавлен квалификатор alter, а после идентификатора интерфейса - необязательная секция для служебной информации. Ключевое слово fix означает исправление ошибки и смысловой нагрузки не несёт.

Ограничение Докомпиляция интерфейса должна проводится в ресурс, отличный от того, откуда загружается докомпилируемый интерфейс.

В случае, если базовый интерфейс реализовывал какие-либо public-функции, имеется возможность изменить их реализацию. Перегружаемые методы описываются в секции overload, которая должна быть описана сразу после параметров интерфейса. Синтаксис описания такой же, как и при наследовании.

Пример
alter interface vTest ( fix 'исправление грамматической ошибки' ) 'Проверка';
overload
function iTest.Func1 ( var VUglUskR : integer ) : boolean;
end;

function iTest.Func1 ( var VUglUskR : integer ) : boolean;
{
Result := False;
if (inherited :: Func1 (VUglUskR)) then
...
}

HandleEvent
cmValue19: {
...
inherited :: HandleEvent (cmValue18);
...
}
end;
end.

Re: Создание интерфейсов с помощью VIP

Добавлено: 27 янв 2003, 15:01
Maxx
Спасибо, Vitas!