Въпрос за units

1 отговора 43 прегледа
#1

Въпрос за units

Здравейте,

По принцип пиша на BCB, но се случва някои неща за по-лесно да ги пиша на Object Pascal в .pas юнити. Имам следният въпрос:

VCL (използвам BCB 6) включва един юнит - WinHelpViewer, който имплементира вюър за WinHelp. Там е дефинирана една глобална инстанция на този вюър, която бива регистрирана с хелп мениджъра в initialization секцията на юнита. Работата е там, че не искам тази глобална инстанция да съществува и да се регистрира; с други думи изобщо да го няма този юнит в приложението ми.

Забелязах, че ако си направя мой празен юнит WinHelpViewer в проекта, той сякаш изцяло заменя този на VCL и целият ми проблем е решен. Изглежда, че при линкване линкера открива моя юнит и повече не търси, при което този на VCL не се линква. Мисля, че съм прав, но бих се радвал ако някой потвърди това или пък ме опровергае. Също така ако има друго решение на проблема ми, също ще се радвам да го чуя.

Благодаря.

Отговор
в отговор на vicente #2

Re: Въпрос за units

Има други модули които заместват този - потърси из торри - мога да ти дам за CHM (може би поддържа и стандартния WinHelp?). Друг вариант е да си копираш кода (без инициализацията) в нов модул - макар, че това е малко нарушаване на лицнза на Борланд.
Другия вариант е да освободиш променливата след инициализация на програмата - ако толкова държиш да я нямаш активна - макар, че не мога да се досетя точно за какво го правиш? Реално трябва да изпълнищ кода за финализация на модула - няма проблем. Не дублирай имена на модули - това може да ти създаде проблеми, иначе ефекта който си видял - може да се превърне изведнъж в дефект ;-)))

if Assigned(HelpViewer.FHelpManager) then
begin
HelpViewer.InternalShutDown;
end;
if Assigned(WinHelpTester) then
begin
WinHelpTester := nil;
end;

---
Е т'ва е живот!
Отговор