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

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

LISP. Записать список глобальных переменных в текстовый файл.

Ответ
Поиск в этой теме
Непрочитано 22.05.2013, 22:18
LISP. Записать список глобальных переменных в текстовый файл.
Golem-iq
 
студент
 
Москва
Регистрация: 03.03.2012
Сообщений: 50

Есть LISP-программа. Она содержит некоторое количество методов, которые являются частью одного алгоритма. Понятное дело, что глобальные переменные объявляются и принимают значения только в ходе работы. Каким образом можно получить список глобальных переменных и их значения в определённый момент времени. А потом этот список записать в текстовый файл.
ЗЫ: Простите за возможно кривую формулировку

[Вопрос решён. Ответ в посте #3]

Последний раз редактировалось Golem-iq, 25.05.2013 в 18:19.
Просмотров: 11735
 
Непрочитано 26.05.2013, 23:23
#21
Дима_

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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
...Это одна страница кода.
А сколько "страниц кода" займет работа с ini на автолиспе?
Offtop: что ini это как-бы прошлый век+найти готовую функцию я думаю труда не составит... и самое главное зачем оно в задаче автора
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 26.05.2013, 23:37
#22
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
А сколько "страниц кода" займет работа с ini на автолиспе?
Не считал: http://autolisp.ru/2011/04/08/data-set-and-get-032/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.05.2013, 23:40
#23
Golem-iq

студент
 
Регистрация: 03.03.2012
Москва
Сообщений: 50


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
То, что в исходном вопросе "записать список глобальных в файл" решено в Autocad в файле acadinfo.lsp. Команда acadinfo. Выгружает все глобальные "символы" и их значения в текстовый файл. Очень любопытная картина получается. Посмотреть support\acadinfo.lsp полезно, чтобы узнать, как это делается. Заодно подумать, и решить "буду делать хорошо, и не буду плохо".

А "плохо" - это даже сама мысль об использовании глобальных для сохранения неких "алгоритмов". Нормальная программа должна быть изолирована в памяти от других. Данные, необходимые для работы в разных сеансах, должна хранить в правильном месте. В зависимости от характера и объема данных это может быть и реестр, и текстовый файл, и даже база данных. Но в правильных ветках реестра и в правильных каталогах ОС.
Не сразу почему то увидел данный Ваш ответ. Это фактически то что мне нужно! Чуть чуть подкорректировать данный LISP и всё супер! Огромная Вам благодарность за помощь!
Golem-iq вне форума  
 
Непрочитано 27.05.2013, 06:55
#24
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
что ini это как-бы прошлый век+найти готовую функцию я думаю труда не составит... и самое главное зачем оно в задаче автора
Про "прошлый век" это Microsoft решила, когда отказалась от INI в Windows. Ну и пусть решила. "А мужики-то не знают" и пользуются. Есть просто подверженные моде -"сегодня ini не носят, носят xml".

Конечно, в конкретной задаче хранить данные можно множеством способов. И специфичных для LISP (записать список в файл "со скобками"), и универсальных - например просто список строк. Но при этом каждый раз писать код, разбирающий файл и знающий, в какой строке что записано.

Но всегда удобно иметь функции записи и чтения пар переменная-значение. Их можно применять тысячи раз, имея такие функции в резидентной библиотеке. При этом возможно работать и с данными, записанными другими программами, это важнее. Если сегодня это и не надо, завтра понадобится.

Можно и xml использовать. У меня есть функции (ru-xml-storage-read-string xml_name relative_path attrib_name default) и (ru-xml-storage-write-string xml_name relative_path attrib_name value). Тоже очень удобно, даже к БД в формате XML можно запрос делать.
ShaggyDoc вне форума  
 
Непрочитано 27.05.2013, 11:52
#25
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Есть просто подверженные моде -"сегодня ini не носят, носят xml".
возможно кто-то и следует "моде", но есть и такие, кто способен анализировать информацию и принимать решение в пользу XML на основе вполне аргументированных причин (и таких людей не мало), понимая преимущества xml над ini (и умея ими пользоваться). Правда для этого нужно разбираться в XML немного больше, чем просто уметь писать тэги.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 27.05.2013, 12:53
#26
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Правда для этого нужно разбираться в XML немного больше, чем просто уметь писать тэги.
А я и пользуюсь. У меня более 200 xml разного назначения. И даже XML-dataset есть, с запросами. Для этого надо не только тэги знать. Очень удобно для локальных БД, не связанных ни с какими движками. Но и от INI не отказываюсь, где это удобнее. Вот только тормозной MSXML не применяю - пусть остается верующим.
ShaggyDoc вне форума  
 
Непрочитано 27.05.2013, 13:23
#27
Дима_

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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Но и от INI не отказываюсь, где это удобнее.
В моем представлении ini может удобней ну пожалуй когда пишешь ядро загрузки - чтоб из ассемблера парсинг написать (формат проще), чтоб он какой-нибудь конфигурационный файл посмторел, - когда библиотек нет, да коду будет поменьше. А в остальном это как-то врядли - по меньшей мере так-же - может быть обратный случай - когда с применением соотвествующий библиотек (или odbc драйверов) к xml на sql'е обратиться удобней иль как Вы сами указали из него dataset настроить. А для "тупого" получения списка пар ключ-значение - с использованием библиотек - по моему абсолютно по барабану.
з.ы. ну если только под словом "удобней" имееться в виду - уже через ini сделанно - и чего его менять - работает же.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 27.05.2013, 13:38
#28
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Вот только тормозной MSXML не применяю - пусть остается верующим.
Как правило, объёмы данных, хранимых мною в XML не превышают нескольких тысяч записей. Тормозов в работе не наблюдаю (и в MSXML в т.ч.). Для очень больших объёмов лучше использовать СУБД, и не важно, используется ли MSXML, XmlLite или др. Религия тут не при чём, тут нужно просто голову включать и смотреть, в какой ситуации что целесообразней использовать (при этом не забывая заглядывать на пару шагов вперёд).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 27.05.2013 в 14:03.
hwd вне форума  
 
Непрочитано 27.05.2013, 18:19
#29
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Тормозов в работе не наблюдаю (и в MSXML в т.ч.).
Ну, если "слаще морковки" ничего не едал... Скорость в процентах по отношению к самому быстрому. Проверяется открытие, чтение, запись, сохранение.

Тест 1. Файл размером 10 МБ.

MSXML: 756%
Xerces XML: 600%
ADOM XML: 549%
NativeXML: 193%
JanXML: 100%

Тест 2. Файл размером 5 Кб.

MSXML: 2000 %
ECXML: 300 %
Native XML: 200 %
MVRB XML: 200 %
JANXML: 100 %

Тест 3. Файл размером 1,75 МБ.

MSXML: 820 %
Native XML: 515 %
MVRB XML: 285 %
JAN XML: 100 %

Про всякие глюки (46 официальных версий MSXML) уже и не говорю.
ShaggyDoc вне форума  
 
Непрочитано 27.05.2013, 18:30
#30
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


@ShaggyDoc,

В минутах\секундах оно было бы более понятно. Проценты в данном случае - это некоторый аналог сферического коня в вакууме: вроде какие-то цифры показаны, а как это проецируется по времени (разброс) - не понятно. Кроме того, под разные технологии ваш код может быть написан по разному: например хорошо написан под Delphi, но не очень хорошо под .NET. Это нужно смотреть конкретные данные и конкретный код.

UPD
Если реально есть желание, то можно выложить в общий доступ некоторые XML файлы данных, подлежащих обработке и оговорить набор операций, которые необходимо выполнить. Затем, написав разные варианты решения, выложить их исходный и машинный код, дабы каждый мог ознакомиться с исходниками и запустив их на своей машинке, сравнить скорость обработки.

Например, на том же .NET работу с XML можно выполнять с использованием такой старой технологии как DOM, либо использовать LINQ to XML. Кроме того, можно воспользоваться распараллеливанием вычислений (PLINQ), что даст прирост скорости на многопроцессорных машинках. Т.о., на данный момент времени, трактовать ваши результаты, не видя ваших данных и исходников - весьма сомнительное (в плане непредвзятости) занятие.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 27.05.2013 в 18:58.
hwd вне форума  
 
Непрочитано 23.04.2018, 15:39
#31
tujn08


 
Регистрация: 26.12.2013
Сообщений: 284


Чего-то я не понял как использовать : "(defun get-all-global-vars"rs"
Мне тоже стало интересно получить пользовательские переменные и их содержимое.
tujn08 вне форума  
 
Непрочитано 24.04.2018, 22:10
#32
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


А я вообще не понимаю всех этих городушек. Объявляешь в лиспе список нужных переменных и печатаешь их себе из лиспа когда хочешь и куда хочешь.
koMon вне форума  
 
Непрочитано 25.04.2018, 07:52
#33
tujn08


 
Регистрация: 26.12.2013
Сообщений: 284


Спортивный интерес просто.
Я получил нужный результат так:
1. сохранил список (atoms-family 1) до программы
2. отработал программу
3. сохранил список (atoms-family 1) после программы
4. (member)- ом сравнивал/печатал на экран отличия

ИТОГО: пользовательские переменные есть, тип и содержимое (кроме функций) получить нет проблем.

И тут я подумал:
а можно ли содержимое функций получить? думаю, что нет.
tujn08 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Записать список глобальных переменных в текстовый файл.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записать данные в файл, находящийся на удалённом компьютере? Makswell Программирование 10 09.07.2015 09:05
Как выдать список переменных (setvar) в текстовый файл Кларисса AutoCAD 6 03.06.2013 13:20
вывод координат из автокада в текстовый файл antonio_k AutoCAD 7 20.03.2009 14:02
вставка строки в существующий текстовый файл Victorovich Программирование 10 20.06.2008 16:42
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47