dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как вывести имя переменной?

Как вывести имя переменной?

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 03.07.2018, 14:37 #1
Как вывести имя переменной?
Fedorino
 
автоматизация и организация черчения
 
Sterlitamak
Регистрация: 17.11.2009
Сообщений: 125

Fedorino вне форума Вставить имя

Добрый день! Подскажите, как вывести имя переменной?
Например вводим
Код:
[Выделить все]
 
(setq ddd 5)
(defun al (val /)
(alert val)
)
Запускаем (al ddd)
Должно вывести ddd.
Не могу разобраться как вытащить имя переменной.
__________________
слесарь САПР
Просмотров: 1264
 
Непрочитано 03.07.2018, 14:52
#2
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,758


(al (rtos ddd)) ?
Nike на форуме вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 03.07.2018, 14:54
#3
Fedorino

автоматизация и организация черчения
 
Регистрация: 17.11.2009
Sterlitamak
Сообщений: 125


Нужно вывести имя переменной, а не ее значение.
__________________
слесарь САПР
Fedorino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.07.2018, 14:57
#4
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 616


Цитата:
Сообщение от Fedorino Посмотреть сообщение
Нужно вывести имя переменной, а не ее значение.
Какой пременной? ddd? Так ее имя ddd.
Setvar вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 03.07.2018, 15:04
#5
Fedorino

автоматизация и организация черчения
 
Регистрация: 17.11.2009
Sterlitamak
Сообщений: 125


Вот его и надо вывести.
Это может быть любая переменная, с любым именем, с любым значением.
Функция должна вывести его.
Например
(setq fff "привет")
(al fff) - выводит fff
(setq prprp '(1 2 3))
(al prprp) - выводит prprp
__________________
слесарь САПР
Fedorino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.07.2018, 15:30
#6
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 616


А вот так не пойдет?
Код:
[Выделить все]
(defun al (/)
(setq ddd 5)
(setq aaa 'ddd)
(princ  aaa)
(princ)
)
(al)
Setvar вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 03.07.2018, 15:42
#7
Fedorino

автоматизация и организация черчения
 
Регистрация: 17.11.2009
Sterlitamak
Сообщений: 125


Есть переменные.
(setq fff "привет")
(setq prprp '(1 2 3))
(setq ddd 5)
и есть универсальная функция проверки.
(al ddd) - выводит ddd=5
(al prprp) - выводит prprp= '(1 2 3)
и т.д.
Значения переменных вывести не составит труда, а вот само имя переменной, чего-то не получается, знаний не хватает.
Setvar у тебя переменная сидит в теле функции, и работать будет только на переменную ddd, а мне нужно универсальную, для любых переменных.
__________________
слесарь САПР
Fedorino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.07.2018, 15:57
#8
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 616


А на фигА тогда этой переменной присваивать значение?
Setvar вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 03.07.2018, 16:09
#9
Fedorino

автоматизация и организация черчения
 
Регистрация: 17.11.2009
Sterlitamak
Сообщений: 125


Есть большая программа, в которой имеются переменные, в процессе работы им присваиваются значения.
Чтобы отлаживать программу, хотелось написать простую функцию, которая выдает имя переменной и ее значение.
Например.
(...)
(...) ; код программы
(в этом месте переменной ddd присвоилось какое-то значение)
(узнаю что присвоилось запуская функцию (al ddd) - вывод ddd=5)
(...) ; код программы
Устанавливая в любом месте (al <имя переменной>), я узнаю какое значение переменной присвоилось.
__________________
слесарь САПР
Fedorino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.07.2018, 16:10
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 35,971


Цитата:
Сообщение от Fedorino Посмотреть сообщение
а мне нужно универсальную, для любых переменных.
Передавай по ссылке:
Код:
[Выделить все]
 (defun al (name) ;|
(setq a "qwer")
(al 'a)
|;
  (alert (strcat (vl-princ-to-string name) " = " (vl-princ-to-string (eval name))))
  ) ;_ end of defun
Но на фига это, если есть VLIDE и его внутренний отслеживатель переменных?

----- добавлено через ~2 мин. -----
Ставишь точку останова, клик на переменной, Ctrl + W - и вперед, смотри, что с ней происходит
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 03.07.2018, 21:15
#11
Fedorino

автоматизация и организация черчения
 
Регистрация: 17.11.2009
Sterlitamak
Сообщений: 125


Кулик Алексей aka kpblc, спасибо, попробую.
До сих пор не привык к полноценному использованию vlide.
По старинке пишу в notepad++.
__________________
слесарь САПР
Fedorino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.07.2018, 22:46
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,708
Отправить сообщение для VVA с помощью ICQ Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Fedorino Посмотреть сообщение
До сих пор не привык к полноценному использованию vlide.
Набери в vlide vlax-pro и нажми Ctrl+Shift+пробел
An Introduction to the Visual LISP IDE
РЕДАКТОР VISUAL LISP
Полезности в редакторе VLIDE
Полезности в редакторе VLIDE, часть 2
__________________
Как использовать код на Лиспе читаем здесь
VVA на форуме вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 04.07.2018, 06:55
#13
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 616


Опять же непонятно, зачем использовать (alert) вместо (princ)? Автор темы работает без командной строки? Странно представить отладку программы без командной строки и без VLIDE. Если я, например, отлаживаю программу, то как-то, само собой, знаю все имена переменных в своей программе, более того, я их сам и задаю. Что-то лукавит автор темы, не договаривает, это стало ясно уже по первым сообщениям.
Setvar вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 04.07.2018, 07:51
#14
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 35,971


Setvar, ТС пишет не во VLIDE, обрати внимание.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 05.07.2018, 09:21
#15
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 1,814


Setvar, автор хочет получить на LISP что-то типа System.Reflection из .NET ...
__________________
_бложиг
Boxa на форуме вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 05.07.2018, 11:34
#16
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 616


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Setvar, ТС пишет не во VLIDE, обрати внимание.
Это я заметил, я сам пишу свои программы исключительно в блокноте еще со времен обратной трассировки. Мне странно, что автор темы не знает своих переменных, как будто это чужая компилированная программа.
Setvar вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 13.07.2018, 13:46
#17
OKJI

AutoLISP
 
Регистрация: 19.06.2018
Харьков
Сообщений: 91
Отправить сообщение для OKJI с помощью Skype™


Такой вариант устроит?
Код:
[Выделить все]
 (setq ddd1 1)
(setq ddd2 2)
(setq ddd3 3)

(defun al (val /)(alert (strcat val ": "(rtos (eval(read val))))))

(al "ddd1")
(al "ddd2")
(al "ddd3")
Сорри... Этот вариант не поддерживает переменные типа "строка" вот более усовершенствованный вариант:
Код:
[Выделить все]
 (setq ddd1 1)
(setq ddd2 2)
(setq ddd "yguiy22")

(defun al (val /)(alert (strcat val ": " (if (NUMBERP(eval(read val))) (rtos(eval(read val))) (eval(read val))))))
(defun al_concol (val /) (princ (strcat val ": " (if (NUMBERP(eval(read val))) (rtos(eval(read val))) (eval(read val)))))(princ))

(al "ddd1")
(al "ddd2")
(al "ddd3")

(al_concol "ddd1")
(al_concol "ddd2")
(al_concol "ddd3")
но он к сожалению не поддерживает переменные типа список...
__________________
Вечность это:
 (while T)

Последний раз редактировалось OKJI, 13.07.2018 в 14:09. Причина: дополнение
OKJI вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 16.07.2018, 08:45
#18
Fedorino

автоматизация и организация черчения
 
Регистрация: 17.11.2009
Sterlitamak
Сообщений: 125


Всем спасибо, буду пользоваться функционалом vlide по просмотру переменных.
Но писать все равно удобнее в notepad++, во встроенном редакторе вообще не наглядно.
__________________
слесарь САПР
Fedorino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 16.07.2018, 08:48
#19
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 35,971


ИМХО наоборот - как раз во VLIDE все видно и допустить глупейшие ошибки становится практически невозможно
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как вывести имя переменной?

РЕВЕРС. Автоматическая пакетная печать множества рамок (форматов) из пространства модели и листов
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как рассчитать фундаментную плиту переменной толщины partietz1049 Основания и фундаменты 22 28.09.2016 08:55
Возможно ли вместо имени переменной в lsp-файле использовать текстовую строку с именем этой переменной? mikls LISP 4 16.06.2015 22:08
VBA. Как вывести значение переменной формуле? Curiosity Программирование 3 16.09.2014 16:23
SolidWorks 2009 x64 SP4 значение переменной в заметке - как? Перенос переменной из детали в сборку - как? sommer78 SolidWorks 6 13.09.2012 13:00
Перевод имени блока в имя переменной и обратно Supermax Программирование 11 14.12.2009 23:26

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||