Я понятия не имею, как писать экспертов или подключаться к IDE, и я боюсь батутов. Сказав это, я заметил, что вы можете сказать разницу между компиляцией и сборкой, отслеживая временные метки файлов в выходной папке проекта, но это отличие очевидно только в том случае, если код (* .pas или * .dfm) изменилось с момента последнего компиляции или сборки. Другими словами, когда происходит смена кода, вы не можете сказать разницу, отслеживая отметки времени. Однако при отсутствии изменения кода с момента последнего компиляции или сборки компиляция изменит только временную метку exe (временные метки dcu не будут изменены).
Таким образом, при отсутствии других более элегантных решений, и только если вы действительно отчаянно нуждаетесь в этой информации (т. Е. Была ли она скомпилирована или была построена?), Тогда я могу предложить вам решение из 2 частей.
Часть 1. Запись процесс мониторинга изменений в временных меток в папке вывода, и
Часть 2. Расскажите вашим коллегам разработчиков, что существует ошибка в D2007, которая усложняет процесс сборки, но эта ошибка легко преодолевать, просто компилируя дважды или строя дважды (или если вы знаете, как автоматизировать это, тогда идите для своей жизни). Если вы можете заставить разработчиков скомпилировать два раза или дважды выполнить сборку, то после второго компиляции или сборки вы сможете определить, была ли она компиляцией или сборкой, тестируя, изменилась ли временная метка dcu на второй компиляции или сборку.
Теперь я пойду и встану в непослушном углу и спрошу себя: «Почему я?». Приветствия.
FWIW, я думаю, что интерфейс «IOTACompileNotifier» и был добавлен в D2010. Если есть недокументированный способ, это он. Возможно, интерфейс, который вам нужен для регистрации уведомителя 'IOTACompileServices', реализуется D2007, но просто не опубликован в D2007 ToolsAPI.pas. Стоит идти. Это GUID - '{68C486EF-C079-4D40-B462-2C0DD21FE342}'. Если нет, вы можете установить код для перехвата события, которое вызывает make/build. Это сложно, потому что вам нужно будет установить батут, и вам понадобится приличная библиотека для подключения. –
К сожалению, не повезло. Я скопировал объявление IOTACompileServices в свое подразделение, но сброс 'BorlandIDEServices как IOTACompileServices' завершился неудачно. – msohn
У меня была надежда, что для этого есть «старый способ», который все равно будет поддерживаться в D2007. – msohn