Изменять пользовательские переменные с помощью директивы компилятора?

#delphi #delphi-2010

#delphi #delphi-2010

Вопрос:

Как я могу изменить пользовательскую переменную типа $ (Test) с помощью кода, используя директиву компилятора или через параметры проекта?

Я определил эту переменную, которая иногда указывает на исходный код магистрали svn, а иногда на источник тега svn. Я использую этот параметр в пути к библиотеке. Когда я открываю магистральный проект, мне нужно, чтобы var был установлен на исходный код магистрального svn, а когда я открываю проект с тегом svn, мне нужно, чтобы var был установлен на тег svn. Оба проекта в магистрали и теге одинаковы, но в магистрали есть некоторые модификации (это код, над которым я работаю, и он еще не готов к использованию).

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

Редактировать:

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

Комментарии:

1. Вы не совсем понимаете, что вы пытаетесь здесь сделать. $(Test) ссылается на переменную среды с именем Test и не имеет абсолютно никакого отношения к компилятору; она используется IDE для разрешения путей (каталогов) во время компиляции. Определение компилятора ничего не сделало бы для изменения среды. Пожалуйста, отредактируйте свой вопрос, чтобы уточнить, что вы пытаетесь сделать.

2. я не знаю об использовании директивы компилятора для этого. но если вам нужен другой метод, вот: сначала вы должны отметить, какие эти переменные доступны только при запуске вашего приложения в среде ide delphi, теперь вы можете прочитать эти переменные с помощью GetEnvironmentVariable функции и задать значение с помощью SetEnvironmentVariable , так что вы можете написать что-то подобное в своем коде SetEnvironmentVariable('Test','C:');

3. Отредактировано, чтобы уточнить, что я ищу.

4. Я думаю, вы идете по этому неправильному пути. У вас должно быть два отдельных файла проекта (.dproj), и откройте тот в IDE, с которым вы хотите работать. Каждый файл конфигурации проекта содержит свою собственную информацию о пути. Единственное, что будет отличаться, это .dproj , и вы не проверяете это в своем VCS. Таким образом, когда вы проверяете код на входе / выходе из каждой ветви, он сохраняет свою собственную копию .dproj с правильными конфигурациями пути. (Я проверяю только исходные файлы .dfm, .dpr, .pas, .rc (resource) для своих собственных ресурсов и любые изображения, которые зависят от проекта или включены в упомянутые ресурсы.)

5. Да, согласен. Но у меня есть несколько проектов, которые используют мой фреймворк. Когда что-то идет не так с проектами hose, я хочу иметь возможность отлаживать их и мой фреймворк. Если у меня нет пути к библиотеке для каждой магистрали и тега, я не смогу.

Ответ №1:

Я бы, вероятно, создал два пакетных файла. Каждый из них сначала установил бы Test переменной среды необходимое значение, а затем запустил IDE.

И затем каждый раз, когда мне нужно было работать с другим набором исходных файлов svn, мне приходилось (повторно) запускать IDE через соответствующий пакетный файл.

Комментарии:

1. Это то, что мы делаем, это кажется наименее ужасным вариантом. Некоторое время у нас был exe-файл, который редактировал dof-файлы предположительно универсальным способом, но он так часто ломался, что доставлял больше хлопот, чем того стоил. Лучше, чтобы это сделал человек и, возможно, скрипт проверил это.

Ответ №2:

Прямой ответ на вопрос таков: это невозможно!

Но, возможно, это решение проблемы: у вас могут быть специальные конфигурации сборки для обработки вашего конкретного запроса. Возможно, вы можете использовать optionset в существующей конфигурации сборки, чтобы установить правильные пути.