|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
23.10.2012, 13:22 | #1 | |
Функция max ограничена 255-тью значениями, можно ли её расширить?
Инженер-конструктор
Юбилейный МО
Регистрация: 29.10.2007
Сообщений: 266
|
||
Просмотров: 6394
|
|
||||
Точно ограничена 255? Ничего не путаешь?
Если мне не изменяет память, то (apply 'max number_list) находит максимум из списка чисел number_list, который может быть значительно длиннее чем 255.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
|
||||
Цитата:
Код:
Хотя, вручную написал Код:
Код:
Опять, же как пользователь может задать аргументы вручную а не через список?
__________________
Почему все вдруг становятся умными, когда уже не надо? Последний раз редактировалось Disney, 23.10.2012 в 14:28. |
||||
|
||||
Инженер-конструктор Регистрация: 29.10.2007
Юбилейный МО
Сообщений: 266
|
Я проверял таким образом:
Код:
Попробовал так: Код:
Последний раз редактировалось Klo, 23.10.2012 в 16:07. Причина: проверил |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Хм, действительно забавно, всплыло еще 1 ограничение автолиспа:
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 23.10.2012 в 15:55. |
|||
|
||||
а для чего использовать такое большое количество аргументов? Почему не передавать в функцию переменную, указывающую на нужный массив данных?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
hwd, шутите? Для max такое не прокатит. Тем не менее, я ждал, когда подтянется серьезная публика, чтобы спросить, а как на уровне памяти все это можно объяснить? Ведь КАД написан не на лиспе, и упомянутая функция вызывает другую, написанную на одном из языков .NET
|
||||
|
||||
Цитата:
На моём ломанном языке это что-то вроде такого: Код:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 23.10.2012 в 17:11. |
||||
|
||||
hwd, Ваш вопрос и был вопросом автора - подход с обертками типа apply, vl-sort, etc. выручает. Однако недокументированные ограничения все же вызывают удивление и интерес.
Получается, в объявлении функции на том же Си, параметр данной функции с такими ограничениями, был бы задан как, например, double arr[255] ? |
||||
|
||||
Цитата:
Код:
Но применительно к данной ситуации (когда количество аргументов не может превышать 256), определение выглядело бы так: Код:
Цитата:
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 23.10.2012 в 19:08. |
||||
|
||||
Инженер-конструктор Регистрация: 29.10.2007
Юбилейный МО
Сообщений: 266
|
Долго мучился, но проблема не решена.
Странно, но: строчка Код:
при вызове программы выдаёт: internal restriction: too many arguments in function call: MAX если вставить эту строку в командную строку автокада вручную (без вызова программы), то она нормально обрабатывается и выдаёт максимальное число. Из-за чего это может быть ума не приложу? |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
В порядке бреда: попробуйте хотя бы одно из значений сделать не целым.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Не сравниваете методы вызова функций в си и лиспе, то что функция работает через apply, но не работает через eval cons ... это 100% косяк, полагаю уходящий корнями во времена когда каждый байт был на счету и автодесковцы вместо нормального транслятора лиспа, поставили эту аццкую смесь (тогда это возможно было оправданно производительностью, но явно не сейчас). Си это язык ориентированный на архитектуру процессора, лисп, по спцификации нет, а автолисп это серединка на половинку. Вот лог из нормального диалекта лиспа - plt/scheme он же Racket:
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
похоже, пора и мне отметиться...
После выхода 2008 акада, я уже делал тему по этой ошибке, точнее ограничению, которое связано с памятью. Помнится, большое обсуждение было на болоте. Выход был по увеличению памяти для переменных лиспа, перед вызовом подобных функций или переписывание функций на итеративные методы.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
|
||||
Инженер-конструктор Регистрация: 29.10.2007
Юбилейный МО
Сообщений: 266
|
to 5hev[ru]: с удовольствием выложу, но не уверен, что кто-то захочет в чужом коде разбираться.
Если кто найдёт, где я напортачил, тому спасибо! Прилагаю: 1. Чертёж, в котором 256 блоков и полилиния. 2. Лисп файлик areablock.lsp и вспомогательный лисп, использующийся в areablock.lsp. При удалении одного блока из файла, всё нормально обрабатывается и вставляется блок со следующим порядковым нумером. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Цветовые схемы вкладки модель | gomer | Готовые программы | 63 | 17.01.2014 07:28 |
RGB составляющие индексных цветов автокада | zamtmn | Программирование | 26 | 23.10.2012 01:31 |
Нелинейный расчет и РСУ??? | bivis333 | Конструкции зданий и сооружений | 240 | 23.01.2010 18:39 |