2012-06-05 1 views
4

В пакете у меня есть компонент, который реализует интерфейс ToolAPi IOTAIDENotifier. Пакет можно настроить, скомпилировать и отобразить на палитре. Метод этого компонента призван сделать что-то конкретное, когда проект, который его использует, скомпилирован (и не выполнен) ... пока все, если ОК.Сообщение «ИнструментыAPI not found» в форме

Проблема возникает позже, когда я использую этот компонент на TForm, который принадлежит другому проекту. Когда я пытаюсь его построить, я получаю сообщение компилятора Файл не найден: ToolsAPI.dcu.

Вот использование пакета:

Uses 
    {$IFDEF PACKAGESETUP} DesignIntf, DesignEditors,{$ENDIF} 
    Classes, ToolsAPI; 

PACKAGESETUP только определяется, когда я скомпилировать BPL

Когда я дважды щелкните сообщение об ошибке, то IDE открывает файл, из которого объявила ссылку на ToolsAPI ... Как я могу избавиться от этой проблемы?

+0

Вы пытаетесь использовать ToolsAPI в настольном приложении? –

+0

Да. Когда я компилирую настольное приложение, один из его компонентов должен делать что-то конкретное в * BeforeCompile (...); * Фактически компонент отвечает за компиляцию файла RES, используемого приложением ... но очевидно, что это используется только тогда, когда IDE открывается, а не во время выполнения. – az01

+2

Использование скомпилированного компонента для этого звучит как последнее средство. Простой скрипт, вызванный из события предварительной сборки, заключается в том, как я это сделаю. Подумайте также, что происходит, когда вы делаете сборку командной строки. –

ответ

5

ToolsAPI доступен только в пакетах разработки. Он существует, чтобы разоблачить IDE для настройки и, следовательно, доступен только в среде IDE, то есть в пакетах разработки. Вам нужно будет удалить ссылку на ToolsAPI из своего рабочего стола.

+0

Есть ли директива, которая определяется при запуске IDE? Я думаю, что я мог бы решить проблему, создав дополнительный компонент, только если что-то вроде DESINGTIME определено ... – az01

+1

@ az01, no. Во всяком случае, было бы слишком поздно; загрузка пакетов дизайна уже была бы предпринята, прежде чем вы сможете проверить. Правильный способ сделать это - отделить ваш код времени разработки от собственного пакета, который использует 'ToolsAPI' и' Design * ', а для пакета designtime требуется пакет времени выполнения, содержащий остальную часть вашего кода. Затем вы правильно используете пакет designtime в среде IDE. –

+0

Привет! И что происходит, когда у вас есть пакет времени разработки, и он не может найти «ToolsAPI»? (* kill me *) –