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

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

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

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

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

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


(al (rtos ddd)) ?
Nike вне форума  
 
Автор темы   Непрочитано 03.07.2018, 14:54
#3
Fedorino

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


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


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


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

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


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


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


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

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


Есть переменные.
(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
Москва
Сообщений: 611


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

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


Есть большая программа, в которой имеются переменные, в процессе работы им присваиваются значения.
Чтобы отлаживать программу, хотелось написать простую функцию, которая выдает имя переменной и ее значение.
Например.
(...)
(...) ; код программы
(в этом месте переменной 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
С.-Петербург
Сообщений: 39,787


Цитата:
Сообщение от 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 - и вперед, смотри, что с ней происходит
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.07.2018, 21:15
#11
Fedorino

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


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

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для 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
Москва
Сообщений: 611


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

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


Setvar, ТС пишет не во VLIDE, обрати внимание.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.07.2018, 09:21
#15
Boxa

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


Setvar, автор хочет получить на LISP что-то типа System.Reflection из .NET ...
Boxa вне форума  
 
Непрочитано 05.07.2018, 11:34
#16
Setvar


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


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

AutoLISP
 
Регистрация: 19.06.2018
Харьков
Сообщений: 101
Отправить сообщение для 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
Сообщений: 135


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

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


ИМХО наоборот - как раз во VLIDE все видно и допустить глупейшие ошибки становится практически невозможно
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей 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