Я хотел бы добавить файл карты в качестве ресурса, а затем извлечь файл каждый раз, когда вы запускаете систему, чтобы гарантировать, что файл карты всегда прав, и упростить жизнь поддержки. В Delphi 7 я могу скомпилировать проект с файлом карты как ресурсом, но карта неверна, потому что, когда возникает исключение, стек вызовов ошибочен. В Delphi Seattle я даже не могу скомпилировать, потому что он пытается добавить ресурс до создания карты. Я знаю, что могу добавить файл в post-compile thask, но есть ли способ сделать это в процессе компиляции/сборки? Извините, если я не очень конкретный, это мой первый вопрос. Благодарю.Можно ли добавить файл .map в качестве ресурса проекта при компиляции?
UPDATE
После того как я прочитал некоторые ответы, я сделал некоторые исследования. Я уже использовал модуль исключения JEDI в своем проекте, но я не знал эксперта JEDI Debug. Он делает то, что я хочу, и многое другое. Эксперт JEDI Debug конвертирует файл .map в файл .jdbg, который является зашифрованным файлом карты (карта - это всего лишь текстовый файл). Кроме того, файл jdbg составляет около 12% меньше, то карта. Он также имеет опции для . Вставьте jdbg в двоичный файл (exe). Чтобы сделать это, я включил опции:
Project -> JCL Debug эксперт -> Создать .jdbg файлы -> Enabled для этого проекта
Project -> Эксперт JCL Debug -> Вставить jdbg данных в двоичном -> Enabled для этого проекта
Project -> JCL Debug эксперт -> Удалить файлы карты после преобразования -> Enabled для этого проекта (если вы хотите удалить файл, конечно)
Чтобы использовать этот инструмент вне IDE, например, с Jenkins, мне пришлось построить проект, доступный в JEDI \ jcl \ examples \ windows \ debug \ tools \ MakeJclDbg.dpr. После сборки он будет генерировать exe-файл в каталоге bin jcl. Как использовать:
MakeJclDbg -J -E -М map_filename
J - Создать .JDBG файлы
E - данные отладки Вставить в исполняемые файлы
M - Удаление MAP файла после преобразования
Исполняемые файлы должны быть в том же каталоге, что и файлы MAP. Это создаст файл jdbg (основанный в файле карты), вставьте в exe и удалите карту. С этим (и с исключением из JEDI), когда возникает исключение, оно доступно для меня трассировкой стека, версиями всех dll, используемых системой, информацией о системной информации и т. Д., А также посылает все это на Эл. адрес.
Я понял, что у Embarcadero также есть jdbg-файлы с их bpl, поэтому я думаю, что они используют инструмент JCL.
@Jerry: What * code *? Вопрос задает вопрос о добавлении ** ресурса ** в исполняемый файл. Нет никакого кода. Это файл карты, сгенерированный компоновщиком при создании исполняемого файла. –
@Jerry: Нет. Вы также можете добавить его из командной строки или события после сборки, используя brcc или MS rcc. Но даже если вы просите IDE сделать это, это еще не код; это директива компилятора, которая представляет собой простой '{$ R filename.ext}' –
@Rodrigo: JEDI имеет возможность встраивать файл карты в исполняемый файл для вас и блок отладки, который вы можете использовать непосредственно в своем приложении для использования он не извлекает его на диск. Другие инструменты отладки (такие как MadExcept и Eureka) также имеют одинаковую функциональность. Гораздо проще использовать один из них, а не пытаться катиться самостоятельно. –