Ошибка: Ошибка Automation. Неверный ввод
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Ошибка: Ошибка Automation. Неверный ввод

Ошибка: Ошибка Automation. Неверный ввод

Ответ
Поиск в этой теме
Непрочитано 27.07.2013, 23:48 #1
Ошибка: Ошибка Automation. Неверный ввод
nolte
 
спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190

Фрагмент кода перенос данных из Excel-а в автокад, но именно здесь он и выдает ошибку, после создания таблицы (таблица отрисовывается). следующая переменная, len_a = nil, при проверке.
Подскажет кто в чем проблема.
Код:
[Выделить все]
(defun		tbl_ktav			(/ i a_list b_list c_list d_list len_a len_b len_c len_d)
(setq pp (vlax-3d-point (getpoint "\n select point :")))
(setq tb (vla-addtable ms pp (+ 3 num_col) 4 5 20))
(setq len_a (apply 'max (mapcar 'strlen a_list)))
(setq len_b (apply 'max (mapcar 'strlen b_list)))
(setq len_c (apply 'max (mapcar 'strlen c_list)))
(setq len_d (apply 'max (mapcar 'strlen d_list)))
(vla-setcolumnwidth tb 3 (* 5 len_a))
(vla-setcolumnwidth tb 2 (* 5 len_b))
(vla-setcolumnwidth tb 1 (* 5 len_c))
(vla-setcolumnwidth tb 0 (* 5 len_d))
(setq i 1)
(repeat num_col
	(vla-settext tb i 3 (nth (1- i) a_list))
	(setq i (1+ i))
)
(setq i 1)
(repeat num_col
	(vla-settext tb i 2 (nth (1- i) b_list))
	(setq i (1+ i))
)
(setq i 1)
(repeat num_col
	(vla-settext tb i 1 (nth (1- i) c_list))
	(setq i (1+ i))
)
(setq i 1)
(repeat num_col
	(vla-settext tb i 0 (nth (1- i) d_list))
	(setq i (1+ i))
)
(princ)
)
Просмотров: 5884
 
Непрочитано 27.07.2013, 23:58
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


а самому подумать?
gomer вне форума  
 
Автор темы   Непрочитано 28.07.2013, 00:23
#3
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


gomer
Да, спасибо, я такой совет тоже могу дать любому и каждому и по любому поводу. Думал уж, не выходит каменный цветочек и все тут. Ты луше б сказал в чем проблема, ну если знаешь конечно, чем зря буковки писАть.
nolte вне форума  
 
Непрочитано 28.07.2013, 13:41
#4
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от nolte Посмотреть сообщение
......
Попробуй из моих запасов, выдерешь нужное для своей функции
Вложения
Тип файла: lsp TableFromXL.LSP (4.1 Кб, 61 просмотров)
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 28.07.2013, 14:08
#5
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


Олег спасибо покапаюсь вечером. Вообще красиво, есть обработка ошибок, что я еще не дошел до этого разберусь по дороге.
nolte вне форума  
 
Непрочитано 28.07.2013, 14:13
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от nolte Посмотреть сообщение
len_a = nil, при проверке.
Оно-же как и len_b, len_c и len_d - Вы либо посмортите и разберитесь как это делаеться в других рабочих кодах, либо напишите на каждую строку - какой смысл Вы в нее закладывете - ибо вся Ваша программа это одна сплошная ошибка (в том смысле что Вы явно не понимаете что она должна делать) - скорее всего Вы пытаетесь передать аргумент через локализированное имя (что само по себе являеться бредом, но в Вашем случае еще и с ошибкой). То есть если Вы, до начала выполнения программы храните данные в a_list, b_list... и хотите получить из них результат - то либо не локализируйте их, а если хотите сделать "правильно" - то передайте и примите данные как аргументы.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 28.07.2013, 14:29
#7
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Проблема в том, что нельзя копирастить код бездумно, а то, что вы не инициализированную локальную переменную пытаетесь впарить mapcar-у -это так, смешное недоразумение. Вы ведь наглым образом соврали, когда написали что len_a = nil, на самом деле оно равно нулю. Хохма в том, что
Код:
[Выделить все]
 (mapcar 'strlen c_list)
не выдает ошибку, а возвращает nil и от этого и происходит блуждание и чесание репки
gomer вне форума  
 
Непрочитано 28.07.2013, 14:37
#8
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


то гомер - он не врал - т.к. переменные локализированны - то есть после того как отработало это чудо програмной мысли - len_a вернулось к "истокам" еще повезло что там ничего до этого не было - могло быть что угодно.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 28.07.2013, 14:46
#9
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


так я про то и говорю, так как тайный алгоритм "проверки" не открыт простым смертным
gomer вне форума  
 
Автор темы   Непрочитано 28.07.2013, 16:18
#10
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


во во это уж луше, конструктивней так сказать.
a_list - список данных с екселя для столбца "а" , данные получает в предыдущей функции, которую я не выложил т.к. работает нормально (ну или мне кажется, что нормально ).
len_a - максимальная длинна текста в колонке "а" ну и так далее.
Выдает nil не mapcar, а именно переменная при проверке в ком строке !Len_a выдает nil.
Пишу это все в нотепад++ и проверяю ручками то бишь ввожу строчку строчку (копирую) в командную строку. Если вводить таким образом то как бы все работает, запускаешь лисп прерывается, впрочем я это уже говорил.
PS
Убрал списки из локальных переменных и все заработало, правда долго до ужаса. Табличка в 200 строк переноситься минуты полторы.
Всем спасибо большое за участие и подсказки.

Последний раз редактировалось nolte, 28.07.2013 в 17:50.
nolte вне форума  
 
Непрочитано 28.07.2013, 17:57
#11
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


а влид религия не позволяет пользовать? спрысни регенерацию таблицы и все будет намного быстрее
gomer вне форума  
 
Непрочитано 28.07.2013, 18:18
#12
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от nolte Посмотреть сообщение
Убрал списки из локальных переменных и все заработало, правда долго до ужаса.
Молодец - теперь дочитай предложение из #6 до конца - если не хочешь еще непонятных ошибок.
Цитата:
Сообщение от nolte Посмотреть сообщение
Пишу это все в нотепад++ и проверяю ручками то бишь ввожу строчку строчку (копирую) в командную строку.
Так можно делать - когда на лиспе пишешь - у тебя пока "императивщина" написанная лисп синтаксисом - если так писать тебе без vlide никак.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 28.07.2013, 19:51
#13
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


Не с религией все в порядке, как то вот так получилось с vlide- ом не поняли мы друг друга с первой попытки, попытаюсь еще раз возможно. По поводу поста #6 дочитал, внял, принял к исполнению. По ходу действия еще вопрос по локальным переменным, если нельзя локализовать в предыдущей функции т.к. она, переменная, несет инфу в действующую функцию (как выяснилось нельзя и в действующей) так где же ее обнулить. В сборке (defun c:blabla (/пер.), в функции сбора мусора или еще где-то.
nolte вне форума  
 
Непрочитано 29.07.2013, 10:10
#14
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от nolte Посмотреть сообщение
если нельзя локализовать в предыдущей функции т.к. она, переменная, несет инфу в действующую функцию (как выяснилось нельзя и в действующей) так где же ее обнулить
"Нести инфу в действующую функцию" должны только аргументы, оно-же как и получать результат - только через возрат функции - можно и по другому, но вопросов это не убавит, а проблем прибавит. Ну и на последок чтоб не было проблем с переменными - их нужно можно вобще не использовать - как это ищи по форуму - я уже не раз расписывал.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 29.07.2013, 14:17
#15
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


Спасибо........
Пошел переваривать, почесывая репу.
nolte вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Ошибка: Ошибка Automation. Неверный ввод



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мои макрокоманды zenon Программирование 1048 16.03.2025 07:36
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Объектный реактор (Ошибка Automation. Объект был стерт) молодой человек Программирование 3 04.12.2009 13:54
Несоответствие результатов в Лире s.vas Лира / Лира-САПР 19 11.11.2009 07:31
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47