CADghost 发表于 2004-6-16 11:10:00

根据提示读取TXT文件中的数据

L1<BR>((b 20) (d 3) (r 3.5) (jmmj 1.13) (mzl 0.89) (z0 0.6))<BR>L2<BR>((b 20) (d 4) (r 3.5) (jmmj 1.46) (mzl 1.15) (z0 0.64))<BR>L3<BR>((b 25) (d 3) (r 3.5) (jmmj 1.43) (mzl 1.12) (z0 0.73))<BR>L4<BR>((b 25) (d 4) (r 3.5) (jmmj 1.86) (mzl 1.46) (z0 0.76))


形如以上的TXT文件,下面还有很多就不写了


(setq a (getstring "\n请输入规格:"))


;输入L4


那么怎么定义一个变量mzl等于TXT文件中L4下的mzl呢

alin 发表于 2004-6-16 12:18:00

(defun C:test (/ f a line LL)<BR>       (setq f (open "filename" "r"))<BR>       (setq a (getstring "\n请输入规格:"))<BR>       (while (setq line (read-line f))<BR>                       (if        (= (read line) (read a))<BR>                                       (progn<BR>        (setq LL (read (read-line f)))<BR>        (mapcar '(lambda (x) (set (car x) (cadr x))) LL)<BR>                                       )<BR>                       )<BR>       )<BR>       (close f)<BR>       (princ)<BR>)

CADghost 发表于 2004-6-16 15:50:00

谢谢你<A name=27573><FONT color=#0000ff><B>alin</B></FONT></A>,我读写文件那里掌握的不太好,


(mapcar '(lambda (x) (set (car x) (cadr x))) LL)


这句是什么意思?


还有,如果我想要的规格在TXT文件中没有,可不可以在LISP里直接进行添加呢?<BR>

alin 发表于 2004-6-16 21:46:00

(mapcar '(lambda (x) (set (car x) (cadr x))) LL)


是把数据文件中的数据逐个赋予前面的变量, 如jmmj = 1.86


还有,如果我想要的规格在TXT文件中没有,可不可以在LISP里直接进行添加呢?


       

秋枫 发表于 2004-6-17 08:09:00

楼主可能是看不懂mapcar与lambda函数。但这些不是关键,你完全可以用其它方式实现。


关键是使用 Set函数 与 Setq函数 的区别。


你可以查一下 Set 函数 的说明。

CADghost 发表于 2004-6-17 09:06:00

<A name=27573><FONT color=#0000ff><B>alin</B></FONT></A>用你昨天给我的程序时,为什么老是提示参数太多呢?

alin 发表于 2004-6-17 10:26:00

??? Have you changed the path in the codes ? Have you got the right format of data.txt?

CADghost 发表于 2004-6-18 10:27:00

说中文行不?

alin 发表于 2004-6-19 07:27:00

我测试过好象没问题,所以不明白。你可以把你实际运行的程序和数据文件贴上来看看

CADghost 发表于 2004-6-20 15:20:00

我用了个笨办法,我把他们全放在LSP里了


就是改着吃点力
页: [1] 2
查看完整版本: 根据提示读取TXT文件中的数据