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

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

Autolisp Как в текстовый файл записать переменную в кавычках

Ответ
Поиск в этой теме
Непрочитано 01.12.2013, 15:39 #1
Autolisp Как в текстовый файл записать переменную в кавычках
mikls
 
Регистрация: 01.12.2013
Сообщений: 25

Есть список, который содержит значения переменных в виде строк (например название объекта) и переменные в виде числовых значений (например размер объекта). С помощью "(princ СПИСОК FILE)" или с помощью "(write-line СПИСОК FILE)" эти файлы записываются в текстовый файл. Список выглядит примерно так: ( ("объект1" 5) ("объект2" 10) и т.д. ), а текстовый файл так: ( (объект1 5) (объект2 10) и т.д. ), то есть в текстовом файле отсутствуют кавычки. Затем эти значения считываются из файла в переменную с помощью "(setq "Переменная" (read-line FILE) )" и "(setq СПИСОК (read "Переменная") )". Затем идет поиск ключевого слова по полученному списку с помощью (assoc "Ключевое слово" СПИСОК). Однако оказалось, что если в текстовом файле значения переменных, содержащие названия объектов, записаны без кавычек, то поиск по ключевому слову "Название объекта" не работает. А если вручную в текстовом файле добавить кавычки к названиям объектов, то поиск работает. А как из лиспа добавить кавычки в текстовый файл, потому что даже если названия объектов в лиспе в кавычках, то в текстовый файл они записываются без кавычек? И еще вопрос: как я понимаю функция "assoc" ищет ключевое слово по первому элементу каждого подсписка. То есть если список выглядит так: ( (5 "объект1") (10 "объект2") и т.д. ), то по ключевому слову "объект2" ничего найдено не будет.А можно ли сделать поиск по сложному списку, содержащему вложенные подсписки, по любому элементу любого подсписка, необязательно первому в каждом подсписке?
Просмотров: 4117
 
Непрочитано 01.12.2013, 15:52
#2
gomer

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


Что мешает при чтении файла заключать строки в кавычки?
gomer вне форума  
 
Автор темы   Непрочитано 01.12.2013, 16:26
#3
mikls


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


То есть перебрать все элементы списка и для каждого элемента определить является ли он числом или строкой, и если это строка, то заключать её в кавычки? Да, это возможно, но гораздо проще было бы добавить кавычки при записи в файл, потому что тогда я уже точно знал бы где у меня строки, а где числовые значения. Проблема в том, что не все подсписки состоят из двух элементов.
mikls вне форума  
 
Непрочитано 01.12.2013, 16:45
#4
gomer

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


С ключами нужно быть предельно последовательным, они могут быть и числовыми. Вам необходимо разобраться со структурой данных, если список многоуровневый то лучше использовать xml вместо txt
gomer вне форума  
 
Непрочитано 01.12.2013, 21:05
#5
trir


 
Регистрация: 18.12.2010
Сообщений: 5,056


xml, в любом случае, лучше использовать...
trir на форуме  
 
Непрочитано 01.12.2013, 21:59
#6
Кулик Алексей aka kpblc
Moderator

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


Спорное утверждение. В некоторых случаях удобнее, проще и быстрее использовать текстовые файлы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.12.2013, 02:25
1 | #7
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


mikls, не берусь утверждать, что это то что тебе нужно, но попробуй использовать функцию (prin1 ...) вместо (princ ...)
Александр Ривилис вне форума  
 
Непрочитано 02.12.2013, 09:24
#8
Кулик Алексей aka kpblc
Moderator

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


Можно также посмотреть vl-princ-to-string и vl-prin1-to-string
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.12.2013, 20:31
#9
mikls


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


Александр, большое спасибо! Это то что я искал! Теперь в текстовый файл всё пишется с кавычками!
Применение vl-princ-to-string и vl-prin1-to-string возможно тоже работает, я еще не проверил, но использовать просто функцию prin1 - это в данном случае кажется самым простым решением
mikls вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp Как в текстовый файл записать переменную в кавычках

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записать данные в файл, находящийся на удалённом компьютере? 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