«日期:2008年1月22日下午04:25:41»
http://www.theswamp.org/index.php?topic=21047.0
[需要沼泽会员才能查看] 大家好,我需要帮助解决这个问题。
看到下面的代码正在工作,但我不满意。
(defun c:query ()
(setq fo (open "C:\\Users\\Augusto\\Desktop\\Sample.csv" "r"))
(setq cod (strcase (getstring t "\nEnter code: "))) ;"AM0.35" or "CZ0.35" ....
(while (setq aline (read-line fo))
(if (wcmatch aline (strcat "*" cod))
(setq cod (substr aline (+ 2 (strlen cod))))
); if
); while
(alert (strcat "Found a match: " cod "\n"))
(princ)
(close fo)
)
测试:样品。csv
我想学习如何创建一个不需要一直访问文件的函数。
我正试图找到一种方法来检索另一个列表中的一个列表,它的部分值是已知的。
Lee Mac编写的“ReadCSV-V1-3”代码,传递到变量“data”,一个包含值的列表从文件中,但找不到使用它的方法。
我的想法是这样的。在代码的开头,我读取了外部文件并将其存储在一个名为“table”的变量中。退出程序时不会清除此变量,因为它是代码的新执行,我检查它是否干净。这样就不需要不断访问文件。
我对学习这门学科很感兴趣。
非常感谢你。 我不会用变量“table”可能会得到一个保留字的问题,任何方式回答你的要求。
(if (= partslist nil)
(progn
(setq fo (open "C:\\Users\\Augusto\\Desktop\\Sample.csv" "r"))
(while (setq partslist (cons (read-line fo) partslist)))
)
(close fo)
(alert "partslist now available use nth to retrieve")
)
) 正是这一部分我遇到了麻烦。
就我所知,函数nth(nth)需要知道您在列表中的位置。
鉴于这一困难,我进一步研究了vl函数。
我找到了vl成员if函数。
我想过使用vl成员if将列表带到第一个位置,并遵循第n个函数(nth)0?这行得通吗?
或者有其他解决方案?
非常感谢。 嗨,路易斯,
如果我理解正确的话,也许是这样的。。。
需要Lee Mac的LM:readcsv例程。
(defun c:test (/ ANS FILE STR)
(if (not *mylist*)
(if (setq file "C:\\Users\\Augusto\\Desktop\\Sample.csv")
(setq *mylist* (LM:readcsv file))
(princ "\nSample.csv was not found!")
)
)
(cond (*mylist*
(if (setq str (getstring "\nEnter code: "))
(progn
(foreach x *mylist*
(if (wcmatch (car x) str)
(setq ans (cadr x))
)
)
(if ans
(alert (strcat "Found a match: \n" ans "\n"))
(alert "\nMatch not faund!!")
)
)
)
)
)
(princ)
)
如果你有任何问题,请在Portugès给我发邮件。。。
HTH公司
亨里克 完美的
谢谢你,亨利,你完全理解我的需要。
你的代码很容易理解。谢谢你和我分享你的知识。
祝你好运,路易斯·奥古斯托。 不客气,路易斯·奥古斯托
很高兴我能帮忙
亨里克
良好的执行Henrique-
如果你不介意的话,我有一些小建议[以下内容未经测试]:
(defun c:test ( / ans str )
(if (or *mylist* (setq *mylist* (LM:readcsv "C:\\Users\\Augusto\\Desktop\\Sample.csv")))
(if (/= "" (setq str (getstring t "\nEnter code <exit>: ")))
(if (setq ans (vl-member-if '(lambda ( x ) (wcmatch (car x) str)) *mylist*))
(alert (strcat "Found a match:\n" (car ans)))
(alert "Match not found.")
)
)
(princ "\nSample.csv not found.")
)
(princ)
)自:
(setq文件“C:\\Users\\Augusto\\Desktop\\Sample.csv”)
和
(setq str(getstring“\n输入代码:”))
将始终返回非nil值,如果vl成员似乎更适合此任务,则返回vl成员。
李 谢谢你,李
修改得很好!
亨里克 感谢大家为我的学习做出的贡献。
当做
路易斯·奥古斯托
页:
1
[2]