Есть проект, в рамках которого был сделан свой фейс, унаследованный от SoprHoz.
До недавнего времени все было ровно.
Тут вот накатили в очередной раз патчи, в частности F_SOPRHOZ.RES до версии 8.10.66.0
Само собой пришлось качнуть исходники этого патча, выдрать из него новую реализацию SoprHoz, чтобы пересобрать свой проект.
И вот тут лыжи не поехали. Сам новый SoprHoz собирается без проишествий. А вот на стадии компиляции моего наследника ругается бранными словами:
Код: Выделить всё
Runtime error 216 (rtl: попытка обращения к некорректному дескриптору)
in atlantis.rtl at 00021F50
Вот код компилируемого фейса
Код: Выделить всё
#include SoprHoz.vih
VipInterface SoprHozVK(SoprHoz);
interface SoprHozVK;
end.
Код: Выделить всё
set ApiDataBase=D:\GAL810\-test\DATA
set ApiExePath=D:\Atl810\Atlantis\exe\vip.exe
set ApiOutFile=D:\my_data\Work_NA\1\user3.res
set ApiTempPath=.\Temp
if exist %ApiOutFile% del %ApiOutFile%
if exist AtlantIs.res del AtlantIs.res
if exist macro.txt del macro.txt
%ApiExePath% vip.prj
Код: Выделить всё
#statusline "statgal"
#include galnet.inc end;
#include GLOVARS.INC
#include galaktika.vil
#make "D:\my_data\Work_NA\1\*.vip"
В SoprHoz.vip вставлен инклуд #include SoprMArker.var.
В нем есть переменная var Eventer : SoprMarker new;
Так вот стоит только закоментить эту строку, компиляция проходит !
Для пробы оставил ее, но передал с типа SOPRMARKER на тип MARKER, код фейса SoprHoz пришлось перетряхнуть. Компиляция проходит!
Может кто понимает суть вещей глубже чем я? Почему от текущей реализации фейса SoprHoz не выходит унаследоваться. Чем так мешает наличие в нем переменной типа SoprMarker?