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

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

LISP. Запись текста в заданную строку текстового файла

Ответ
Поиск в этой теме
Непрочитано 28.12.2011, 17:08 #1
LISP. Запись текста в заданную строку текстового файла
Nitrogenium
 
инженер
 
Санкт-Петербург
Регистрация: 02.03.2010
Сообщений: 69

Не нашел функцию записи текстовой информации в файл в нужное место. Вообще есть такая возможность?
Просмотров: 5060
 
Непрочитано 28.12.2011, 17:11
#2
Лиспер


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


Ее, по-моему, в принципе нет. В текстовый файл информация записывается последовательно.
Так что сначала все прочитать, потом изменить (вставить новую строку в нужное место), потом все сразу записать.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 28.12.2011, 17:14
#3
Nitrogenium

инженер
 
Регистрация: 02.03.2010
Санкт-Петербург
Сообщений: 69
<phrase 1=


а программно как сделать - не подскажете?
Nitrogenium вне форума  
 
Непрочитано 28.12.2011, 17:33
#4
Nike

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


http://aco.ifmo.ru/~nadinet/html/lectures/lsp_2.html
Nike вне форума  
 
Непрочитано 28.12.2011, 19:35
#5
Дима_

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


Offtop: ИХМО - ни в коем случае не читайте Толстолобу - это пример того как не нужно писать на Lisp - хоть и привычно для большинства "турбо-поскалевских наследников".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 28.12.2011, 20:08
#6
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Nitrogenium Посмотреть сообщение
а программно как сделать - не подскажете?
Посмотри пример сам переделай по ситуации (из старых запасов без проверки)


Код:
[Выделить все]
 ;;frx.lsp
;; find / replace string in the text (.sat in this example but may any) file

(defun C:FRX (/ fdesc fname fnew fso readstr source sourcepath
	        stringfind stringreplace target targetpath)

  (setq stringfind "44675K32" ;<-- set old string here
	stringfind (strcat "8 " stringfind " #")
	stringreplace "NewLayerName" ;<-- set new layer name here
	stringreplace (strcat "8 " stringreplace " #")
	)
  (setq sourcepath (getfiled "Select SAT file:" (getvar "dwgprefix") "SAT" 16))

  (setq targetpath (strcat
		     (vl-filename-directory sourcepath); <--in the same folder
			   "\\"
			   "TempSatFileName"; <--change the temp file name if you need though no matter
			   (vl-filename-extension sourcepath)))

  (setq fso (vlax-create-object "Scripting.FileSystemObject"))
  (if (zerop (vlax-invoke fso 'FileExists (findfile sourcepath)))
  (progn
  (alert "File does not exist")
  (exit)
  (princ))
  )
(vl-catch-all-apply (function (lambda(); <--to bypass if copy is already exist  
(vl-file-copy sourcepath
  (strcat "C:\\Temp\\" ;<-- set path to folder that contains your copy files
	  "CopyOfSourceFile"
	  (vl-filename-extension sourcepath)))))); <-- copy source file, who knows...
  
(setq source (vlax-invoke fso 'OpenTextFile sourcepath 1 :vlax-false))
(setq target (vlax-invoke fso 'CreateTextFile targetpath :vlax-true))

(while
  (equal (vlax-get-property source 'AtEndOfStream) :vlax-false)
  (setq readstr (vlax-invoke source 'ReadLine))
  ;;; search for string to replace 
  (if
  (not (vl-string-search stringfind readstr));<-- if not found
  (vlax-invoke target 'WriteLine readstr);<-- write the same one
  (vlax-invoke target 'WriteLine (vl-string-subst stringreplace stringfind readstr)) ;<-- else write edited line 
  )
)
  
(vlax-invoke source 'Close)
(vlax-invoke target 'Close)
  
(setq fdesc (vlax-invoke fso 'GetFile sourcepath))
(setq fname (vlax-get fdesc 'Name)); <-- replace temp file name with source file name

(vlax-invoke fdesc 'Delete); <-- delete source file
(princ "\nSource file was deleted"); <-- dummy input for micro pause
(setq fnew (vlax-invoke fso 'GetFile targetpath))
(vlax-put fnew 'Name fname); <-- short name only!

(vlax-release-object fdesc)  
(vlax-release-object fnew)  
(vlax-release-object source)
(vlax-release-object target)       
(vlax-release-object fso)

(gc)
(gc)
(gc)

(alert "Done")
(princ)
)
(prompt "\n====================================\n")
(prompt "\n***     Type FRX to execute ...  ***\n")
(prompt "\n====================================\n")
(prin1)

(vl-load-com)
Олег (jr.) вне форума  
 
Непрочитано 28.12.2011, 20:17
#7
gomer

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


Offtop: Вероятно, Дима_ намекает на рекурсию, правда с ней он уже "лопухнулся" насчет полилиний. Но все же, "НИ В КОЕМ СЛУЧАЕ НЕ ЧИТАЙТЕ ТОЛСТОЛОБУ"!!!
чтение файла необходимо хотя бы потому, что можно задать место для записи, не существующее в файле
gomer вне форума  
 
Непрочитано 29.12.2011, 00:53
#8
Дима_

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


Цитата:
Сообщение от gomer Посмотреть сообщение
правда с ней он уже "лопухнулся" насчет полилиний
Напомните??
з.ы. с чего Вы взяли, что я намекаю на рекурсию, я пока не спрашиваю.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 29.12.2011, 02:23
#9
gomer

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Напомните??
жутко извиняюсь, дело было про аттрибуты, правда с полилиниями могло быть то же самое, и с текстовыми файлами тоже может быть
gomer вне форума  
 
Непрочитано 05.03.2012, 14:09
#10
Xara

Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135


Цитата:
Сообщение от Дима_ Посмотреть сообщение
ни в коем случае не читайте Толстолобу
Цитата:
Сообщение от gomer Посмотреть сообщение
"НИ В КОЕМ СЛУЧАЕ НЕ ЧИТАЙТЕ ТОЛСТОЛОБУ"!!!
Как это глупо - оскорблять автора сайта, на котором представлен код из разных источников, в т.ч. Полещука...
Xara вне форума  
 
Непрочитано 05.03.2012, 14:32
#11
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Xara Посмотреть сообщение
Как это глупо - оскорблять автора сайта, на котором представлен код из разных источников, в т.ч. Полещука...
Дай пять
Я тоже начинал с этого сайта и ничего вроде жив пока
Олег (jr.) вне форума  
 
Непрочитано 05.03.2012, 14:58
#12
Дима_

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


Ни разу я ее не оскорбил - изучать автолисп я по ее трудам я не рекомендую (если только Вам не зачет по теме сдать и навсегда про него забыть).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 05.03.2012, 18:59
#13
Xara

Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Дай пять
*highfive*

Цитата:
Сообщение от Дима_ Посмотреть сообщение
Ни разу я ее не оскорбил
Поскольку знаю ее лично, и знаю ее как прекрасного человека, не могу пройти мимо коверкания ее фамилии, это и задело.
Код плохой, согласен. С ошибками кое-где, кое-где с недочетами, но это ведь не повод, правда?
А сайт - кафедральный. Он не предназначен для такой аудитории, как, скажем, Крыс или VVA. И как раз для того, чтобы студенты "сдали и забыли"))


ЗЫ: прошу прощения за оффтоп
Xara вне форума  
 
Непрочитано 05.03.2012, 21:07
#14
gomer

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


->Олег (jr.), Xara: То что выложено на сайте толстобы пригодно только для получения оценки по соответствующей дисциплине, правда во многих вузах, еще эти знания можно применять в маленьких архаично-провинциальных конторках, где никто никуда не спешит... ВСЕ! И вы, начитавшиеся того, что там написано, потом приходите сюда и кричите: "как мне сделать то, а как это, а почему не получается". Мы, "гуры" вставляем вам мозги, если не лень, и объяснять приходится с нуля, и не раз... Ну сколько уже тут написано по этому поводу...
зы Ко мне примитивное понимание языка пришло только через пять лет его изучения (пусть не плотного, но все же)
зызы Поэтому гурой я себя не считаю
зызызы Важно начать понимать, что у нас есть, что мы хотим сделать, для чего это нужно и как это воплотить!
Лиспер же все понятно объяснил. Я могу дополнить только, что текстовый файл - это список строчек, каждая строка которого - список символов. Имеем
(defun ReadToFile (row col str fn)
(if (findfile fn)
;; и так далее, делов на 10 минут
)
)
Да, это долго: сначала прочел, поменял, потом записал... Ну так не используйте устаревшие технологии, а применяете другие методы, да хотя бы xml-parsing, читайте данные из excel, из бд... кто мешает? Вот потому, что студенту эти знания снесут мозг и он завалит сессию, может быть, на известном сайте и подано все так, примитивненько
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Запись текста в заданную строку текстового файла



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
LISP. Выравнивание текста по двум точкам. Krieger Готовые программы 10 24.12.2011 16:02
lisp для построения продольного профиля из текстового файла Nikolays LISP 5 31.10.2011 14:41
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
Изменение форматированного текста посредством lisp Tramp LISP 4 03.03.2006 11:28