| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > UserR, UserI

UserR, UserI

Ответ
Поиск в этой теме
Непрочитано 06.02.2004, 06:54 #1
UserR, UserI
Vova
 
Engineer
 
New-York
Регистрация: 05.09.2003
Сообщений: 10,288

Бытует мнение, что нежелательно использовать в программах системные переменные Userr Useri так как они могут быть использованы еще в какой-то программе. Мне думается, что это чушь. Кто знает об этом доподлинно? Есть ли примеры неправильной работы по этой причине?
Просмотров: 4437
 
Непрочитано 06.02.2004, 10:24
#2
Alxd


 
Сообщений: n/a


Все верно. Глобальные переменные каждая программа может использовать по своему усмотрению. Это может привести с серьезным заморочкам. Поэтому опираться на такие переменные не стоит.

Хорошим тоном в данном случае является сохранение состояния переменных как бы в стеке перед использованием.
Начал выполнение своей программы - запомни изменяемые переменные в локальных.
Завершаешь выполнение - восстанови переменные.

Но такое не у всех, да и не всегда применимо.

Вообщем, использовать можно, но на свой собственный страх и риск.
 
 
Непрочитано 06.02.2004, 10:36 Re: UserR, UserI
#3
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
Сообщение от Vova
Бытует мнение, что нежелательно использовать в программах системные переменные Userr Useri так как они могут быть использованы еще в какой-то программе.
[sm2001] К счастью это мнение уже достаточно распространилось среди разработчиков и User* переменные используются все реже . Этому способствует и тот факт, что появились новые "хранилища" для пользовательских данных. Расширенные данные, пользовательские словари... А во времена AutoCAD R10 в эти переменные пмсали все кому не лень и все, что угодно. Так что проблемы были, можете не сомневаться. Иногда приходилось писать данные во внешний файл. Помогало.
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 20.02.2004, 20:42
#4
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Не стоит этими переменными пользоваться - разные програмки могут переписывать такую переменную
и в результате может все перепутаться. Нуууу очень не рекомендуется.
Startrek вне форума  
 
Автор темы   Непрочитано 23.02.2004, 06:26
#5
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


У нас в конторе давно сущствует меню с набором команд, их пол-сотни, и большинство базируется на масштабном коэффициенте, за который принят Useri. Кроме того, есть коллекция ЛИСПов, а их около сотни, в том числе найденные нашим cad-manager где-то на стороне и которыми активно пользуются. Никогда не было проблем по вине незапланированного изменения масштаба, то бишь Useri. Видимо, срыв может произойти, если внутри какой-то примененной проги Useri поменяется. Пользователь это всегда сразу заметит и вновь нажмет кнопку масштаба, за исключением случая, если это изменение малозаметно. Например, выбирается масштаб 1:100, то есть Useri=100. А прога поменяла его на 98. Велика ли вероятность такого события? Но даже этого можно избежать, введя коэффициент, что значительно уменьшит вероятность совпадений. Кроме того, в статусной строке сидит контроль за масштабом. Дело в том, что для макросов User очень удобен. Критики, можете ли предложить замену?
Vova вне форума  
 
Непрочитано 23.02.2004, 07:09
#6
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


По моему всегда надо учитывать такую возможность срыва, береженного бог бережет. :shock: :roll:
А вот замена есть - я пользуюсь функцией SETENV (setenv $scale$ 100) к примеру, закидывает вэту переменную в REGISTRY, всегда case sencetive получить обратно (getenv $scale$) not (getenv $SCALE$)
Startrek вне форума  
 
Автор темы   Непрочитано 23.02.2004, 07:19
#7
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


А для AutoCAD LT?
Vova вне форума  
 
Непрочитано 23.02.2004, 17:21
#8
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


>>vova
А вот этого увы не знаю, неприходилось пользоваться LT.
Startrek вне форума  
 
Непрочитано 23.02.2004, 19:10
#9
Андрей С.

Архитектор
 
Регистрация: 25.08.2003
Москва
Сообщений: 307


>Vova
В Штатах народ более дисциплинированный и не ставит (может быть) себе на рабочий компьютер скачанные из сети лиспы. У нас очень даже ставят, и не хочется кидать в них за это камни, т.к. часто это здорово ускоряет работу. Поэтому все же надежнее или пользоваться новыми возможностями - словари и т.п., или писать в текстовые файлы (думаю, что даже в LT можно придумать, как это сделать). К тому же у нас народ избалован полубесплатным "полным" акадом...
Андрей С. вне форума  
 
Автор темы   Непрочитано 24.02.2004, 04:35
#10
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Андрей С> Eсли в компьютере есть местечко, где разрешается держать свои материалы, там всегда можно поместить и скачанные где угодно лиспы. Их в Штатах не меньше вашего. И соответственно, пользоваться ими, что я и делаю. (например, лисп от Srartrek, позволяющий менять текст или атрибут по образцу). По существу вопроса: пока-что только общие слова против применения User. Ни одногo конкретного примера. Кроме того, полагаю, что проблему можно решить таким образом, что защищенность этой переменной значительно увеличится. просто об этом не думали. Давайте попробуем это сделать коллективно. Если откликнется несколько человек, я поставлю конкретную задачу. Если есть у кого-то моя книга и вы добрались до главы 7, задача станет вполне понятной.
Vova вне форума  
 
Непрочитано 24.02.2004, 16:13
#11
Андрей С.

Архитектор
 
Регистрация: 25.08.2003
Москва
Сообщений: 307


>Vova
Я вовсе не против применения USER* для собственного удобства, тем более в LT, где мал шанс их перезаписи сторонними лиспами. Просто при наличии полноценного Автокада их использование (опять-таки, не для себя любимого, а в коммерческом продукте, за который деньги берут) может привести к конфликтам. Ничего ужасного и необратимого от этого не будет, просто речь о неудобствах и иногда потерянном времени.
Недавний пример. Приятель давно пользовал прогу, которая расставляет некие блоки вдоль некой траектории. Долго все было хорошо. Потом он скачал и зарегистрировал (за деньги, пусть и не очень большие) еще одну, которая рисует некие схемы и производит несложные вычисления. Перестали нормально работать и та, и другая. То есть по отдельности каждая работает, а попеременно - нет. Это все сейчас так ясно стало: первая испоьзует USERR1 для хранения масштаба блоков, вторая - для каких-то своих вычислений. А вот если учесть, что обе проги компилированные и в текст не залезешь, легко представить, сколько было убито времени на отлов глюка и какое у нас с ним сложилось мнение об авторах второй (платной) проги.
Вывод - пользуйте User* на здоровье для себя сколько хотите. Если же вы свои программы продаете, то лучше этого не делать.
Андрей С. вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > UserR, UserI

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск