Предлагаю заменить сообщение в журнале
unloading ModuleName failedна
unloading ModuleName failed
ModuleName referenced by: ClientName1 ClientName2Для этого в DevDebug добавить:
Код:
PROCEDURE LogClients (m: Kernel.Module);
VAR n: Kernel.Module; name: Kernel.Name; i, j, _: INTEGER;
BEGIN
IF m # NIL THEN
n := Kernel.modList;
WHILE n # NIL DO
IF n.refcnt >= 0 THEN
j := n.nofimps;
i := 0; WHILE (i < j) & (n.imports[i] # m) DO INC(i) END;
IF i < j THEN Kernel.Utf8ToString(n.name, name, _); StdLog.String(name); StdLog.Char(' ') END
END;
n := n.next
END
END
END LogClients;
И в процедуру UnloadMod вставить то, что между (*!*)
Код:
PROCEDURE UnloadMod (name: TextMappers.String; VAR ok: BOOLEAN);
VAR mod: Kernel.Module; str: Dialog.String;
BEGIN
mod := Kernel.ThisLoadedMod(name);
IF mod # NIL THEN
IF name # "DevDebug" THEN
Dialog.ShowParamStatus("#Dev:Unloading", name, "", "");
Kernel.UnloadMod(mod)
END;
IF mod.refcnt < 0 THEN
Dialog.MapParamString("#Dev:Unloaded", name, "", "", str);
StdLog.String(str); StdLog.Ln
ELSE
Dialog.ShowParamMsg("#Dev:UnloadingFailed", name, "", "");
(*!*)
IF mod.refcnt > 0 THEN
StdLog.ParamMsg("#Dev:^0 referenced by: ", name, '', ''); LogClients(mod); StdLog.Ln
END;
(*!*)
ok := FALSE
END
ELSE
Dialog.ShowParamMsg("#Dev:NotFound", name, "", "");
ok := FALSE;
END
END UnloadMod;