[xyzzy:02283] Re: バージョンアップのお知らせ
- Subject: [xyzzy:02283] Re: バージョンアップのお知らせ
- From: Tetsuya Kamei <kamei@xxxxxxxxxxxx>
- X-mailer: Denshin 8 Go V321.2b5
- X-yzzy-version: 0.0.0.78
Mon, 29 Mar 1999 12:13:01 +0900 の
“[xyzzy:02278] バージョンアップのお知らせ”
への返事です.
| しました。相変わらず何も変わってませんけど。
何が変わったかってーと、こういうしょーもないことができ
るようになりました。
(defconstant *ole-reader-.* '#:ole-.)
(defconstant *ole-reader-[* '#:ole-[)
(defconstant *ole-reader-}* '#:ole-})
(defvar *ole-readtable*
(let ((x (copy-readtable)))
(set-macro-character #\. #'(lambda (stream c) *ole-reader-.*) nil x)
(set-macro-character #\[ #'(lambda (stream c) *ole-reader-[*) nil x)
(set-macro-character #\} #'(lambda (stream c) *ole-reader-}*) nil x)
(set-syntax-from-char #\] #\) x)
x))
(defun ole-reader (stream char param)
(let ((*readtable* *ole-readtable*))
(let ((obj (read stream t nil t)))
(loop
(let ((sep (read stream t nil t)))
(cond ((eq sep *ole-reader-.*)
(let ((prop (read stream t nil t)))
(when (or (eq prop *ole-reader-.*)
(eq prop *ole-reader-[*)
(eq prop *ole-reader-}*))
(error "Unexpected ~a" prop))
(setq obj `(ole-method ,obj ',prop))))
((eq sep *ole-reader-[*)
(unwind-protect
(progn
(set-syntax-from-char #\. #\.)
(setq obj (nconc obj (read-delimited-list #\] stream t))))
(set-macro-character #\. #'(lambda (stream c) *ole-reader-.*))))
((eq sep *ole-reader-}*)
(return obj))
(t
(error "Unexpected ~s" sep))))))))
(set-dispatch-macro-character #\# #\{ #'ole-reader)
(defsetf ole-method (obj prop &rest args) (x)
`(progn
(ole-putprop ,obj ,prop ,x ,@args)
,x))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun excel-demo ()
(interactive)
(let (app chart)
(setq app (ole-create-object "Excel.Application"))
(setf #{app.Visible} t)
#{app.Workbooks.Add}
(setf #{app.Range["a1"].Value} 3)
(setf #{app.Range["a2"].Value} 2)
(setf #{app.Range["a3"].Value} 1)
#{app.Range["a1:a3"].Select}
(setq chart #{app.Charts.Add})
(setf #{chart.Type} -4100) ; xl3DColumn
(do ((i 0 (+ i 10)))
((> i 180))
(setf #{chart.Rotation} i)
(sit-for .1))
(sit-for 1)
#{app.ActiveWorkbook.Close[0]}
#{app.Quit}))
(defun ie-demo ()
(interactive)
(let ((ie (ole-create-object "InternetExplorer.Application")))
(setf #{ie.Visible} t)
#{ie.Navigate["http://wakusei.cplaza.ne.jp/archiver/"]}))
--
亀井哲弥(Tetsuya Kamei)
kamei@xxxxxxxxxxxx/JCA00343@xxxxxxxxxxx