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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как создать каталог в Лиспе

Как создать каталог в Лиспе

Ответ
Поиск в этой теме
Непрочитано 23.03.2009, 20:24 #1
Как создать каталог в Лиспе
nik_mb
 
конструктор
 
Волгоград
Регистрация: 23.03.2009
Сообщений: 120

Не могу найти способ создания каталога в Лиспе. Так написал функцию для копирования файлов в определенное место.
Код:
[Выделить все]
[FONT=Calibri];; перенос иконок[/FONT]
[FONT=Calibri](setq spis_icons (vl-directory-files path11));;Выбор списка файлов из источника[/FONT]
[FONT=Calibri](setq l_ss (length spis_icons) n 2);; Предопределенные параметры[/FONT]
[FONT=Calibri](repeat (- l_ss 2);;проход по всему списку, кроме первых двух[/FONT]
[FONT=Calibri](setq icon (nth n spis_icons));;выбор очередного файла из списка[/FONT]
[FONT=Calibri](vl-file-copy (strcat path11 icon)(strcat dan_a1  "\\Icons\\" icon));;копирование в определенное место[/FONT]
[FONT=Calibri];;где dan_a1 "Диск:\\Documents and Settings\\Пользователь\\Application Data\\Autodesk\\AutoCAD 2008\\R17.1\\rus\\support"[/FONT]
[FONT=Calibri](setq n (1+ n))[/FONT]
[FONT=Calibri]);; end repeat[/FONT]
[FONT=Calibri]Так если каталога “Icons” не существует, то копирования не происходит.[/FONT]
Просмотров: 1728
 
Непрочитано 23.03.2009, 20:32
#2
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Код:
[Выделить все]
(vl-mkdir "c:\\mydirectory”)
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 23.03.2009, 20:47
#3
nik_mb

конструктор
 
Регистрация: 23.03.2009
Волгоград
Сообщений: 120


Спасибо, Елпанов Евгений!
Казалось, просмотрел всю справку, а эту лисп-функцию не заметил.
nik_mb вне форума  
 
Непрочитано 23.03.2009, 22:12
#4
Кулик Алексей aka kpblc
Moderator

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


Одно "но": функция не сможет создавать "вложенные" каталоги. То есть на момент вызова (vl-mkdir "c:\\1\\2\\3") каталог c:\1\2 уже должен существовать, иначе результатом будет nil. По крайней мере у меня получается так.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.03.2009, 22:56
#5
nik_mb

конструктор
 
Регистрация: 23.03.2009
Волгоград
Сообщений: 120


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Одно "но": функция не сможет создавать "вложенные" каталоги. То есть на момент вызова (vl-mkdir "c:\\1\\2\\3") каталог c:\1\2 уже должен существовать, иначе результатом будет nil. По крайней мере у меня получается так.
Спасибо за информацию.
И хотя я и написал "Строитель" (acad-s.narod.ru), с созданием каталога столкнулся первый раз. Два дня высматривал в справке нужную функцию, но тут тот случай, когда смотришь в книгу (точнее - монитор), а видишь...
А вложенные каталоги можно обойти так:
Код:
[Выделить все]
(vl-mkdir (setq katal1 (strcat dan_a1  "\\Icons")))
(vl-mkdir (setq katal2 (strcat katal1  "\\Icons_2")))
(vl-mkdir (setq katal3 (strcat katal2  "\\Icons_3")))
;; и так далее
Тогда задача моя будет посложней.
Это я решил написать программу установщик к "Строителю". Так есть каталог с устанавливаемыми файлами. Пользователь загрузил программу из этой папки. Теперь программа должна найти саму себя куда бы пользователь ее не скопировал. Не придумав ничего лучшего, чем
Код:
[Выделить все]
(cond
((setq put_in (findfile "C:\\StroiUst\\ustroy.fas"))(setq path (vl-filename-directory put_in)))
((setq put_in (findfile "D:\\StroiUst\\ustroy.fas"))(setq path (vl-filename-directory put_in))) 
;;и так долее до буквы диска "К" (думаю, что на этом хватит)
)
;;а если все же пользователь куда-то еще скопировал то пусть ищет сам
(if (null path) (setq path (vl-filename-directory (getfiled "Выбери файл установки 'ustroy.fas' в папке" "" "" 16))))
задумался - коряво это как-то. А как бы по другом, изящнее?
nik_mb вне форума  
 
Непрочитано 23.03.2009, 23:05
#6
Кулик Алексей aka kpblc
Moderator

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


Поизячнее - это использовать, например, InnoSetup (на ru-board.com несколько веток ему посвящено). В реестр прописывается каталог установки; лиспом он же считывается и больше (для начала) практически ничего не требуется Если пользователь настолько (кхммм....), что сам перемещает файлы и каталоги, то пускай сам и расковыривает дальше
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как создать каталог в Лиспе

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать функцию с необязательным вводом параметра Krieger Программирование 2 14.02.2009 11:49
SW подскажите как создать радиальное отверстие Chives SolidWorks 23 17.12.2008 00:54
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Юмор 2007 Огурец Разное 1172 29.12.2007 11:16
Подскажите пожалуйста как создать БАЗУ ДАННЫХ!!!??? master_blaster AutoCAD 5 12.04.2006 10:46