根据提示读取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呢 (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>) 谢谢你<A name=27573><FONT color=#0000ff><B>alin</B></FONT></A>,我读写文件那里掌握的不太好,
(mapcar '(lambda (x) (set (car x) (cadr x))) LL)
这句是什么意思?
还有,如果我想要的规格在TXT文件中没有,可不可以在LISP里直接进行添加呢?<BR> (mapcar '(lambda (x) (set (car x) (cadr x))) LL)
是把数据文件中的数据逐个赋予前面的变量, 如jmmj = 1.86
还有,如果我想要的规格在TXT文件中没有,可不可以在LISP里直接进行添加呢?
楼主可能是看不懂mapcar与lambda函数。但这些不是关键,你完全可以用其它方式实现。
关键是使用 Set函数 与 Setq函数 的区别。
你可以查一下 Set 函数 的说明。 <A name=27573><FONT color=#0000ff><B>alin</B></FONT></A>用你昨天给我的程序时,为什么老是提示参数太多呢? ??? Have you changed the path in the codes ? Have you got the right format of data.txt? 说中文行不? 我测试过好象没问题,所以不明白。你可以把你实际运行的程序和数据文件贴上来看看 我用了个笨办法,我把他们全放在LSP里了
就是改着吃点力
页:
[1]
2