|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
06.02.2004, 06:54 | #1 | |
UserR, UserI
Engineer
New-York
Регистрация: 05.09.2003
Сообщений: 10,288
|
||
Просмотров: 4437
|
|
||||
Сообщений: n/a
|
Все верно. Глобальные переменные каждая программа может использовать по своему усмотрению. Это может привести с серьезным заморочкам. Поэтому опираться на такие переменные не стоит.
Хорошим тоном в данном случае является сохранение состояния переменных как бы в стеке перед использованием. Начал выполнение своей программы - запомни изменяемые переменные в локальных. Завершаешь выполнение - восстанови переменные. Но такое не у всех, да и не всегда применимо. Вообщем, использовать можно, но на свой собственный страх и риск. |
|||
|
||||
LISP-программист Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238
|
Цитата:
__________________
Там все есть для счастья - меня там только нет. Так это значит, что я там - буду! |
|||
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
У нас в конторе давно сущствует меню с набором команд, их пол-сотни, и большинство базируется на масштабном коэффициенте, за который принят Useri. Кроме того, есть коллекция ЛИСПов, а их около сотни, в том числе найденные нашим cad-manager где-то на стороне и которыми активно пользуются. Никогда не было проблем по вине незапланированного изменения масштаба, то бишь Useri. Видимо, срыв может произойти, если внутри какой-то примененной проги Useri поменяется. Пользователь это всегда сразу заметит и вновь нажмет кнопку масштаба, за исключением случая, если это изменение малозаметно. Например, выбирается масштаб 1:100, то есть Useri=100. А прога поменяла его на 98. Велика ли вероятность такого события? Но даже этого можно избежать, введя коэффициент, что значительно уменьшит вероятность совпадений. Кроме того, в статусной строке сидит контроль за масштабом. Дело в том, что для макросов User очень удобен. Критики, можете ли предложить замену?
|
|||
|
||||
AutoCAD/AutoLISP Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133
|
По моему всегда надо учитывать такую возможность срыва, береженного бог бережет. :shock: :roll:
А вот замена есть - я пользуюсь функцией SETENV (setenv $scale$ 100) к примеру, закидывает вэту переменную в REGISTRY, всегда case sencetive получить обратно (getenv $scale$) not (getenv $SCALE$) |
|||
|
||||
Архитектор Регистрация: 25.08.2003
Москва
Сообщений: 307
|
>Vova
В Штатах народ более дисциплинированный и не ставит (может быть) себе на рабочий компьютер скачанные из сети лиспы. У нас очень даже ставят, и не хочется кидать в них за это камни, т.к. часто это здорово ускоряет работу. Поэтому все же надежнее или пользоваться новыми возможностями - словари и т.п., или писать в текстовые файлы (думаю, что даже в LT можно придумать, как это сделать). К тому же у нас народ избалован полубесплатным "полным" акадом... |
|||
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Андрей С> Eсли в компьютере есть местечко, где разрешается держать свои материалы, там всегда можно поместить и скачанные где угодно лиспы. Их в Штатах не меньше вашего. И соответственно, пользоваться ими, что я и делаю. (например, лисп от Srartrek, позволяющий менять текст или атрибут по образцу). По существу вопроса: пока-что только общие слова против применения User. Ни одногo конкретного примера. Кроме того, полагаю, что проблему можно решить таким образом, что защищенность этой переменной значительно увеличится. просто об этом не думали. Давайте попробуем это сделать коллективно. Если откликнется несколько человек, я поставлю конкретную задачу. Если есть у кого-то моя книга и вы добрались до главы 7, задача станет вполне понятной.
|
|||
|
||||
Архитектор Регистрация: 25.08.2003
Москва
Сообщений: 307
|
>Vova
Я вовсе не против применения USER* для собственного удобства, тем более в LT, где мал шанс их перезаписи сторонними лиспами. Просто при наличии полноценного Автокада их использование (опять-таки, не для себя любимого, а в коммерческом продукте, за который деньги берут) может привести к конфликтам. Ничего ужасного и необратимого от этого не будет, просто речь о неудобствах и иногда потерянном времени. Недавний пример. Приятель давно пользовал прогу, которая расставляет некие блоки вдоль некой траектории. Долго все было хорошо. Потом он скачал и зарегистрировал (за деньги, пусть и не очень большие) еще одну, которая рисует некие схемы и производит несложные вычисления. Перестали нормально работать и та, и другая. То есть по отдельности каждая работает, а попеременно - нет. Это все сейчас так ясно стало: первая испоьзует USERR1 для хранения масштаба блоков, вторая - для каких-то своих вычислений. А вот если учесть, что обе проги компилированные и в текст не залезешь, легко представить, сколько было убито времени на отлов глюка и какое у нас с ним сложилось мнение об авторах второй (платной) проги. Вывод - пользуйте User* на здоровье для себя сколько хотите. Если же вы свои программы продаете, то лучше этого не делать. |
|||