По-моему я нашёл баг в DevPacker'е. Проявляется так. Скачиваем
подсистему для раскраски синтаксиса Master (адаптированную мной для BlackBox 1.6).
Лучше всего экспериментировать в
Красноярской сборке Ивана Денисова, т.к. она имеет возможность автоматизации процесса упаковывания всей сборки в EXE, для чего в ней присутствует модуль RedSubs с командой PackAllToExe (в меню: Red -> Упаковать всё в EXE).
Распакуем Master в сборку Red, запустим, появится новый пункт меню — Мастер. Теперь собираем всю сборку в один EXE, переместим этот EXE'шник в другую папку (чтобы исключить чтение не из упакованной ФС, а извне) и запустим. Теперь при попытке раскрасить синтаксис:
Мастер -> Раскрасить активный документ
стабильно получается такое сообщение в логе:
Не найден файл Master/Rsrc/DefaultSyntaxAttributes.syn
Хотя, разумеется, этот файл пакуется, я проверил: EXE'шник становится больше на примерно его размер. Но что подозрительно — в теле EXE'шника простым поиском строка DefaultSyntaxAttributes.syn не находится.
Читается этот файл процедурой MasterColors.Init, вызываемой из инициализатора модуля MasterColors. Выглядит она так:
Код:
PROCEDURE Init;
VAR file: Files.File;
BEGIN
file := Files.dir.Old(Files.dir.This("Master/Rsrc/"), "DefaultSyntaxAttributes.syn", FALSE);
IF file # NIL THEN
IntAttr(file);
file.Close()
ELSE
StdLog.String("Не найден файл Master/Rsrc/DefaultSyntaxAttributes.syn");
StdLog.Ln()
END;
MasterColorScanner.InitSyntaxAttributes(syntax);
END Init;
т.е. должна работать в EXE, собранном DevPacker'ом, потому как он эмулирует виртуальную файловую систему.
Мы уже пытались чуть-чуть разобраться с Иваном Кузьмицким, стало ясно, что проблема, скорее всего, в DevPacker'е, но где именно — надо рыть, на что лично у меня не хватает квалификации, поэтому и пишу. Посоветуйте что-нибудь. Спасибо.