rushonda писал(а):по Conditional Disable пока мало понятной инфы нашел, если есть где-то примеры - направьте)
Ну, довольно хорошо во встроенной справке по
написано. Если очень коротко, то с помощью Conditional Disable Structure можно активировать определённый кусок кода в зависимости от внешних условий и деактивировать другие. Под активацией я имею в виду компиляцию кода. Деактивированный код не будет компилироваться
и не будет проверяться на возможные ошибки. Таким образом, можно обойти подгрузку ненужных (или отсутствующих) в данный момент
, что, как я понял, вам требуется, и что Case Structure не в состоянии обеспечить. По умолчанию для Conditional Disable Structure определено лишь несколько условных символов: CPU, OS, RUN_TIME_ENGINE, TARGET_BITNESS и TARGET_TYPE. По их именам легко догадаться, для чего они могут использоваться - например, в режиме среды разработки выполняем одну ветку, в режиме ран-тайма (exe) другую. Для этого пригодится символ RUN_TIME_ENGINE. Читайте подробнее
здесь. Вы также можете определить собственные символы, о чём говорится
вот тут. Для этого нужно создать проект, поместить в него ваш
, а в свойствах проекта определить символ и его значение. После этого в любом
проекта можно использовать данный символ в Conditional Disable Structure.
Вручную переключать символы не очень интересно, поэтому можем применить
немного "чёрной магии", в результате получим возможность программного чтения и записи символов.
Запись символа выполняется на файловом уровне, поэтому символ активируется в отдельном
.
Посмотрите на такой пример:
Здесь OG_Checker.vi используется, чтобы переключать символ OPENG_AVAIL в True или False, в зависимости от наличия папки \National Instruments\LabVIEW xxxx\user.lib\_OpenG.lib\numeric. В Main.vi в зависимости от состояния символа выполняется либо ветка с использованием инструмента OpenG, либо ветка со стандартными инструментами
. Разрабочику, впервые получившему этот проект, требуется однократно запустить OG_Checker.vi
из проекта, чтобы установить конкретное состояние переменной.
rushonda писал(а):dadreamer, а в какой момент проверять? если папки нет, а в программе используются функции из библиотеки OpenG, то программа и запуститься то не даст...
На эти два вопроса я вроде бы ответил выше.
Хотя, честно говоря, у меня вызывает некоторые сомнения ваш подход. Понятно, что речь о режиме разработки, т.к. в скомпиленном варианте между разными ветками кода переключаться не имеет смысла. Да и не получится без "танцев с бубнами". Получается, что вы хотите предоставить неким сторонним программистам ваш проект с целью модификации?.. Почему бы тогда сразу не оговорить, что требуется пакет OpenG (или не требуется, если не собираетесь его использовать)? Попытка "подстрелить двух зайцев" может обернуться дополнительными сложностями в дальнейшем.