Можно ли преобразовать из типа данных STR в тип данных SUBR
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Можно ли преобразовать из типа данных STR в тип данных SUBR

Можно ли преобразовать из типа данных STR в тип данных SUBR

Ответ
Поиск в этой теме
Непрочитано 23.02.2015, 23:34 #1
Можно ли преобразовать из типа данных STR в тип данных SUBR
granit201z
 
Проектировщик
 
Камышин
Регистрация: 17.08.2014
Сообщений: 118

то есть, например, я хочу исполнить ф-ю (alert "некоторое сообщение"), но не хочу, чтобы имело место слово alert. Для этого надо

(setq fara "alert")
((Неизвестная_Мне_Функция fara) "некоторое сообщение")

Можно ли подобное провернуть на AutoLisp, то есть существует ли так называемая Неизвестная_Мне_Функция?

Заранее спасибо

----- добавлено через ~30 мин. -----
ф-я read не подошла, т.к. преобразовывает в SYM а не SUBR
Просмотров: 3673
 
Непрочитано 24.02.2015, 09:18
#2
Кулик Алексей aka kpblc
Moderator

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


А вот (eval (read <...>)) делает то, что надо.

----- добавлено через 14 сек. -----
Правда, на фига так поступать - неясно.

----- добавлено через ~3 мин. -----
Код:
[Выделить все]
 (setq ttt "alert")
(eval (read (strcat "(" ttt " \"Test call\")")))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.02.2015, 09:55
#3
granit201z

Проектировщик
 
Регистрация: 17.08.2014
Камышин
Сообщений: 118


Спасибо, Алексей! Просто программа в своем бесплатном исполнении должна утомлять пользователя просьбой зарегистрировать версию. Поэтому хотелось бы, чтобы в исходном коде слово alert не фигурировало, так как тогда слишком просто понять откуда ноги растут). Конечно при большом желании убрать назойливое сообщение эта мера не остановит "продвинутого хакера", но все же пусть взломщики хоть чуть-чуть поднапрягутся)
granit201z вне форума  
 
Непрочитано 24.02.2015, 10:44
#4
Кулик Алексей aka kpblc
Moderator

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


Компилируй в fas / vlx - и проблем никаких.

----- добавлено через ~8 мин. -----
В качестве примера (накидал по-быстрому, поэтому дорабатывай как посчитаешь нужным)
Код:
[Выделить все]
 (defun get-hidden-msg (call-func / str)
  ;; (get-hidden-msg "(alert \"Зарегистрируйте версию!\")")
  ;; -> "016000940911664102011299613456010240115639601501765760052441515295382458081585645760053824576005904954289585645244101024510765244157600580815382464516010890115601681"
  (setq str (mapcar
              (function
                (lambda (x / _kpblc-string-align)
                  (defun _kpblc-string-align (string str-len sym is-left / sym_count)
                    (if (>= (setq
                              sym_count (- str-len (strlen string))
                              ) ;_ end of setq
                            1
                            ) ;_ end of >
                      (repeat sym_count
                        (setq string (if is-left
                                       (strcat sym string)
                                       (strcat string sym)
                                       ) ;_ end of if
                              ) ;_ end of setq
                        ) ;_ end of repeat
                      ) ;_ end of if
                    string
                    ) ;_ end of defun

                  (_kpblc-string-align (itoa (expt x 2)) 5 "0" t)
                  ) ;_ end of lambda
                ) ;_ end of function
              (vl-string->list call-func)
              ) ;_ end of mapcar
        ) ;_ end of setq
  (apply (function strcat) str)
  ) ;_ end of defun

(defun eval-call-func (func-name / _kpblc-conv-string-to-list-by-strlen)
  (defun _kpblc-conv-string-to-list-by-strlen (str len / res)
    (cond
      ((not str) nil)
      ((<= (strlen str) len) (list str))
      (t (cons (substr str 1 len) (_kpblc-conv-string-to-list-by-strlen (substr str (1+ len)) len)))
      ) ;_ end of cond
    ) ;_ end of defun
  (eval (read (vl-list->string (mapcar (function (lambda (x) (fix (sqrt (atoi x)))))
                                       (_kpblc-conv-string-to-list-by-strlen func-name 5)
                                       ) ;_ end of mapcar
                               ) ;_ end of VL-LIST->STRING
              ) ;_ end of read
        ) ;_ end of eval
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.02.2015, 11:18
#5
granit201z

Проектировщик
 
Регистрация: 17.08.2014
Камышин
Сообщений: 118


Спасибо! Премного благодарен)
granit201z вне форума  
 
Непрочитано 24.02.2015, 14:25
#6
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Компилируй в fas / vlx - и проблем никаких.
+1
А с этими хитромудростями сам потом запутаешься, когда через какое-то время правки нужно будет в код вносить.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 24.02.2015, 21:53
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


поучительная тема, особенно посты Евгения Елпанова часы в лиспе

----- добавлено через ~3 мин. -----
Возможно ли защитить код на Lisp
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 25.02.2015, 19:24
#8
granit201z

Проектировщик
 
Регистрация: 17.08.2014
Камышин
Сообщений: 118


Спасибо, VVA. Но это уже все в программе есть: и защита по времени, и защита по ключевой записи в реестре, и скомпилирована она в vlx. Но это все для основной версии, а для демонстрации нужно было это пресловутое "alert" замаскировать. Т.к. предполагаю декомпилировать vlx не сложно. И хоть там все переменные изменят свои названия и комментариев не будет, все равно alert будет предательски выделяться. Хотя впрочем вопрос закрыт благодаря Кулик Алексею. А тема на мой взгляд все-равно довольно интересная получилась
granit201z вне форума  
 
Непрочитано 25.02.2015, 20:35
#9
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от granit201z Посмотреть сообщение
декомпилировать vlx не сложно
Мне за 8 лет такое не удалось. Может быть, сейчас и вышли дизассемблеры более мощные и интересные, да еще и выдающие читабельный результат - не знаю (но с огромным интересом на них посмотрю).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.02.2015, 20:44
#10
Дима_

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


Код:
[Выделить все]
 (setq my-secret-function alert)
(my-secret-function "Опс")
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 27.02.2015, 15:53
#11
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


если кому-то будет мешать твой alert, то он просто добавит (setvar "qaflags" 4)
Vov.Ka вне форума  
 
Автор темы   Непрочитано 02.03.2015, 09:52
#12
granit201z

Проектировщик
 
Регистрация: 17.08.2014
Камышин
Сообщений: 118


спасибо Vov.Ka. Информация полезная
granit201z вне форума  
 
Непрочитано 02.03.2015, 10:27
#13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Подробности здесь QAFLAGS (Системная переменная)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Можно ли преобразовать из типа данных STR в тип данных SUBR



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Экспорт данных об объектах типа 3d solids из dxf passerby Программирование 6 18.05.2007 13:15
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46
ГОСТ на ванты и оттяжки ??? зщцук? Поиск литературы, чертежей, моделей и прочих материалов 1 17.05.2005 06:53