|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Просьба протестировать функцию
Thượng Tá Quân Đội Nhân Dân Việt Nam
44d32'44"С, 33d26'51"В
Регистрация: 14.03.2005
Сообщений: 13,372
|
||
Просмотров: 7058
|
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
|
|||
![]() |
|
||||
Инженер Регистрация: 18.02.2005
Самара
Сообщений: 747
|
Цитата:
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Объясняю, в чем дело.
1. В первой строке теста печатается версия Автокада (чтобы вручную не напрягаться с "конфиденциальностью". 2. Во второй строке функция vla-get-supportpath должна возвращать SupportPath, разделенные ; Эта строка записывается в реестр, а пути отображаются в диалоге Options в Support File Search Path. Мы ее запомнили, чтобы восстановить потом 3. В третьей строке функцией vla-put-supportpath добавляем в начало фиктивный каталог. В этот момент этот каталог добавляется и в реестр и в диалог (проверить можно пошаговым исполнением). 4. В четвертой строке мы читаем с помощью vla-get-supportpath дорожку. А в ней нет добавленного каталога!!! 5. В пятой строке восстанавливаем первоначальный путь - чтобы у тестеров не осталось грязи. А потом еще раз печатаем для проверки. Пока у всех показывает, что vla-get-supportpath возвращает не все. Причем возвращает не все, даже если Автокад перезагрузить - хотя в реестре и диалоге новый каталог показывается. Не могу понять в чем дело. Может быть я зациклился на какой-то элементарной ошибке? Натычьте носом. |
|||
![]() |
|
||||
Цитата:
У меня какое-то ощущение дежавю, если честно. Пойду покопаюсь в своем приложении. Я смутно помню, что во время оно здорово намучился с этими путями. |
||||
![]() |
|
||||
Машиностроение, Проектирование Регистрация: 15.09.2003
Москва
Сообщений: 1,113
![]() |
Аналогично, не сохраняется.
а если сделать изменения, выйти из проги, а потом считать другой? Я к тому что может быть реестр надо "перечитать" -Читал предыдущие посты невнимательно, каюсь ![]() > PilotПодгрузи (vl-load-com) |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 308
|
Цитата:
Цитата:
Цитата:
Никак не пойму, откуда эта лишняя строка появляется? |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 308
|
С лишней строкой так и не разобрался, зато получилось вывести каталог.
Цитата:
Код:
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Несуществующий каталог я просто для примера включил. По идее, несуществующий каталог не должна включать функция vla-put. Но она его принимает, каталог записывается в реестр и появляется в диалоге.
Обязанность get-функции вернуть то, что записано, не умничая. Конечно, для гарантии можно включить и создание каталога. Однако сталкиваюсь и с ситуациями, когда на другом компьютере не возвращается и имя реально существующего каталога. Нет стабильности, и однозначности, что еще опаснее. PS - Лишняя строка - это просто результат выполнения всей функции. Один раз печатает print, а последний - результат. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А если попробовать через (setenv "ACAD")? Пишу с машины без установленного acad, поэтому могу ошибаться.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Но дело не в том, как другим путем прочитать. Дело "в прынцыпе". |
|||
![]() |
|
||||
Цитата:
Выкладывает, например, кто-нибудь программу на VBA -> не работает -> надо пойти и подлючить какую-нибудь Reference -> Как бы он ее такую конечному пользователю продал бы, интересно? |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Всех бесят. Но тут есть разные причины:
1. Недоработки со стороны автора - чаще всего. Обычно не со зла, просто автор чего-то не знает. Хотя бывает, что знает, но специально так делает. Обычно это неучет особенностей NT-подобных систем, прав пользователей и системы безопасности. 2. Глюки самого Автокада. Некоторые обнаруживаются не сразу. Например, вот эта ошибка (а может, и не "глюк", а "фича") объявилась на 1001-компьютере. А на 1000 - работает нормально. Но нужно было сочетание ряда непредсказуемых условий, чтобы наткнуться. Конечно, исправить - дело плевое, замена одного файла библиотеки функций решит проблему. Все пользователи на строгом учете. Хуже, когда ужасные ошибки делаются в очень популярных системах. Например, сейчас массово переходят на OpenOffice. Мне пришлось тестировать плотно Calc и Base и выяснилось, что, при определенных условиях, они вообще неработоспособны. Причем предыдущие версии работали нормально, а самые свежие вообще разучились (Base). А Calc (заменитель Excel) вообще неправильно "калькулирует" в некоторых ситуациях. Причем об этом знают, но успокаивают (цитирую) Цитата:
Какие такие «остальные случаи» для плохо считающего калькулятора? Использование в качестве пресса для бумаг? Спасибо всем за содействие с тестом. Ситуация прояснилась, решение найдено. |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 308
|
А-а, так получается исходная программа и не должна вернуть имя несуществующего каталога? И соотв обязана вывести имя существующего (извините, что уточняю, не очень разбираюсь в объектных функциях, а тем более в их связи с реестром).
Вспомнил еще о фаерволах, настройках безопасности винды и прочем. Ведь можно запретить программам менять записи в реестре, перемещать файлы программ и т.п. Хотя это Вы наверняка в первую очередь проверили. |
|||
![]() |
|
||||
проектировщик Регистрация: 07.03.2007
Шахты
Сообщений: 32
|
ShaggyDoc:
3. ... функцией vla-put-supportpath добавляем в начало фиктивный каталог. В этот момент этот каталог добавляется и в реестр и в диалог (проверить можно пошаговым исполнением). 4. В четвертой строке мы читаем с помощью vla-get-supportpath дорожку. А в ней нет добавленного каталога!!! У меня результат тот же, если не создать заранее реальный каталог. Реальный каталог в строке выводится. AutoCAD 2006 русский. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Если есть возможность отсутствия каталога в путях поддержки, то нужна фукция проверки на его присутствие, а там уже надо думать по каким причинам он изчез, например пользователь запустился со спецярлыка, сменил добавил удалил профиль, появился новый пользователь виндофс, случайно удалил из окна настроек. Если вашего пути поддержки нет но он нужен то добавить и после того как проверка пройдена грузить лиспы из этого каталога или выдать сообщение об ошибке.
я у себя свои лиспы так и гружу через ACADDOC. Эта мысль мне пришла в голову когда СПДС начал пользовать ну и когда там автокад переустановить надо чтоб в настройки не пользовать каждый раз он автоматически добавляется при первом запуске и при запуске СПДС. при этом я точно уверен что каталог есть на диске и все лиспы в нем присутствуют. А если каталога нет на диске, но он был то тут явно пользователь сам постарался и сам виноват. "Ой, ма, смотри чёй это за каталог такой смешной C:\Documents and Settings\LAMER\Application Data\Autodesk\AutoCAD 2007\R17.0\rus\Support\ЧужиеLISPы". DELET. Тут уже ничего не поделаешь и ждет вас оказание вечного суппорта. И нет вашей вины, и пусчай он сам мучится. Если программа расчитана на широкий круг пользователей которым невдомек, что ваша программа расположена в какомто каталоге. то не мешалобы сделать проверку на присутствие каталога непосредственно на диске, хотя это и не обязательно см. абзац выше. А то, что, там ввел руками, удалил лиспом, попытался подсунуть несуществуючий это все ерунда. Если каталог есть на диске то проблем никаких не будет и все будет работать как надо. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Ой, не надо мне рассказывать, как писать программы. Разумеется, все что надо есть - и проверка профилей, и проверка каталогов, и их создание и прочее.
Сама проблема выявилась потому, что у меня есть специальная хитрющая дамочка, которой поручено строить всякие пакости с целью тестирования. Вот она и сумела создать ситуацию, когда после проверки каталогов меняется алгоритм их определения. Достаточно хитрым для дамочек, но допустимым способом (рассказывать не буду) Здесь я просил только проверить на разных версиях функции get и put. По идее, одна (put) должна строку создать и записать куда положено, а вторая (get) должна строку прочитать. Проверка существования каталога - не их компетенция. Это делается на другом уровне. Например, в диалоговом окне при вводе несуществующего каталога выдается запрос. А если подтвердил, то он записывается, и это логично. Запрос - на уровне программы (команды), а запись - на уровне функции. Если предположить, что нельзя в путях иметь несуществующий каталог, то тогда и put не должна его записывать. Но это должно быть документировано. В документации ограничений нет, да и put добавляет хоть что. А уж для get вообще не ее собачье дело что-то решать. Она должна вернуть то, что записано. Иначе как же сделать проверку на ошибочные каталоги? В настройках-то они есть, а выявить можно только визуально или нештатными методами. А надо бы штатными. |
|||
![]() |