panpan1202 发表于 2010-10-25 20:54:00

唉 看不到啊 赶紧发帖

461045462 发表于 2010-10-26 07:33:00

<p>&nbsp;&nbsp; 谢谢版主</p>
<p>下载来学习研究一下。</p>
<p>或许能利用的上</p>
<p>谢谢</p>
<p>&nbsp;</p>
<p>&nbsp;不知道读取什么文件?</p>
<p>试了几个文件都显示出现有误:</p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">C:TT<br/>命令:&nbsp; HELP<br/>命令: tt ; 错误: 参数类型错误: stringp 1<br/>命令:<br/>命令:&nbsp; TT ; 错误: 参数类型错误: stringp 1<br/>命令:<br/>命令: tt ; 错误: 参数类型错误: stringp 1<br/>命令:<br/>命令: tt ; 错误: 参数类型错误: stringp 1<br/>命令:</font></p>
<p>&nbsp; 望得到指教。</p>
<p>在此先谢了</p>
<p>&nbsp;</p>

rainbow272 发表于 2010-10-26 19:36:00

看看,学习一下了。

zark 发表于 2010-10-27 13:03:00

<p>可以定义一个函数,将带,或空格等符号的字符串转为一个LST。比如</p>
<p>STR="2,23234,4554"</p>
<p>执行一个命令(str-&gt;lst str)就等到 (2 23234 4554)这样用起来就很方便了。不用SUBSTR.</p>
<p><font face="Verdana"><br/>(defun String-&gt;list (Strs / P TMP_LIST TMP_STR)<br/>&nbsp; (while (vl-string-search "\t" strs)<br/>&nbsp;&nbsp;&nbsp; (setq strs (vl-string-subst " " "\t" strs))<br/>&nbsp; )<br/>&nbsp; (while (vl-string-search "," strs)<br/>&nbsp;&nbsp;&nbsp; (setq strs (vl-string-subst " " "," strs))<br/>&nbsp; )<br/>&nbsp; (while (vl-string-search "," strs)<br/>&nbsp;&nbsp;&nbsp; (setq strs (vl-string-subst " " "," strs))<br/>&nbsp; )<br/>&nbsp; (while (vl-string-search ";" strs)<br/>&nbsp;&nbsp;&nbsp; (setq strs (vl-string-subst " " ";" strs))<br/>&nbsp; )<br/>&nbsp; (while (vl-string-search ";" strs)<br/>&nbsp;&nbsp;&nbsp; (setq strs (vl-string-subst " " ";" strs))<br/>&nbsp; )<br/>&nbsp; (while (vl-string-search "&nbsp; " strs)<br/>&nbsp;&nbsp;&nbsp; (setq strs (vl-string-subst " " "&nbsp; " strs))<br/>&nbsp; )<br/>&nbsp; (if (read strs)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq tmp_list '())<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (setq p (vl-string-search " " strs))<br/>&nbsp;(setq tmp_str (substr strs 1 p))<br/>&nbsp;(if (Read tmp_str)<br/>&nbsp;&nbsp; (setq tmp_list (cons tmp_str tmp_list))<br/>&nbsp;)<br/>&nbsp;(setq strs (vl-string-subst "" (substr strs 1 (1+ p)) strs))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (Read strs)<br/>&nbsp;(setq tmp_list (cons strs tmp_list))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq tmp_list (reverse tmp_list))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>)</font></p>

neulixue 发表于 2010-10-31 14:40:00

谢谢了

LIFEI18 发表于 2010-10-31 18:30:00

学习学习,为什么我使用时不带路径,就找不到文件呢

plan 发表于 2010-10-31 22:44:00

<p>使用DOSLIB函式库之DOS_STRTOKENS函数将字串转成串列较为简捷,但须依CAD版别载入DOSLIB函式库</p>
<p>假设有一个文本档案为aaa.txt,文件内容如下: 1,2133,4645 2,123123,4564 </p>
<p>读取后串列资料为 ALAN_S=' ("1,2133,4645" "2,123123,4564") </p>
<p>(DEFUN C:ALAN (/ ALAN_S ITEMLIST NUM A B) </p>
<p>&nbsp; (LOAD_DOSLIB) </p>
<p>&nbsp; (SETQ ALAN_S '("1,2133,4645" "2,123123,4564") ITEMLIST '() NUM 0)</p>
<p>&nbsp;&nbsp; (REPEAT (LENGTH ALAN_S) </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; (SETQ ITEMLIST (APPEND ITEMLIST (LIST (DOS_STRTOKENS (NTH NUM ALAN_S) ","))))</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;(SETQ NUM (+ NUM 1)) </p>
<p>&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp; (SETQ A (NTH 0 (NTH 1 ITEMLIST)) B (NTH 2 (NTH 1 ITEMLIST))) </p>
<p>)</p>
<p>&nbsp;</p>
<p>&nbsp;(DEFUN LOAD_DOSLIB (/ AC_VER);←依CAD版别载入DOSLIB函式库</p>
<p>&nbsp; &nbsp;(SETQ AC_VER (SUBSTR (GETVAR "ACADVER") 1 2))</p>
<p>&nbsp; &nbsp;(IF (NOT DOS_DRIVE) </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (PROGN </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (COND ((AND (= AC_VER "13")(WCMATCH (STRCASE (GETVAR "PLATFORM")) "*DOS*")) </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (XLOAD "DOSLIB13") </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((= AC_VER "12")(XLOAD "DOSLIB12"))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;(T (ARXLOAD (STRCAT "DOSLIB" AC_VER)))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;)</p>
<p>&nbsp;)</p>
<p>&nbsp;(PRINC "\nALAN 程式已载入 !")(PRINC "\n")</p>
<p>&nbsp;(PROMPT "----------------------------&lt;&lt; C:ALAN &gt;&gt;------------------------------\n") (PRINC) </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>上网搜寻DOSLIB就可下载 </p>

dwg001 发表于 2010-11-1 00:14:00

<p>版主的这句似乎有错:</p>
<p>(while (/= (setq s (substr i 2)) ",") </p>
<li>&nbsp;&nbsp; (setq tmp (strcat tmp (substr s 1 1)) i (1+ i))
<li>&nbsp; )</li>
<p>&nbsp;----》</p>
<p><font face="Verdana">(while (/= (setq s (substr s2 i 2)) ",")<br/>&nbsp;&nbsp; (setq tmp (strcat tmp (substr s2 i 1)) i (1+ i))<br/>&nbsp; )</font></p>

dancle 发表于 2010-11-1 13:03:00

先收藏了,以后会用上!!

wx198261 发表于 2010-11-1 17:11:00

看看,学习了
页: 1 2 [3] 4 5 6 7 8
查看完整版本: 询问读取文本文件内容的方法(lisp编程)