唉 看不到啊 赶紧发帖
<p> 谢谢版主</p>
<p>下载来学习研究一下。</p>
<p>或许能利用的上</p>
<p>谢谢</p>
<p> </p>
<p> 不知道读取什么文件?</p>
<p>试了几个文件都显示出现有误:</p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">C:TT<br/>命令: HELP<br/>命令: tt ; 错误: 参数类型错误: stringp 1<br/>命令:<br/>命令: TT ; 错误: 参数类型错误: stringp 1<br/>命令:<br/>命令: tt ; 错误: 参数类型错误: stringp 1<br/>命令:<br/>命令: tt ; 错误: 参数类型错误: stringp 1<br/>命令:</font></p>
<p> 望得到指教。</p>
<p>在此先谢了</p>
<p> </p>
看看,学习一下了。
<p>可以定义一个函数,将带,或空格等符号的字符串转为一个LST。比如</p>
<p>STR="2,23234,4554"</p>
<p>执行一个命令(str->lst str)就等到 (2 23234 4554)这样用起来就很方便了。不用SUBSTR.</p>
<p><font face="Verdana"><br/>(defun String->list (Strs / P TMP_LIST TMP_STR)<br/> (while (vl-string-search "\t" strs)<br/> (setq strs (vl-string-subst " " "\t" strs))<br/> )<br/> (while (vl-string-search "," strs)<br/> (setq strs (vl-string-subst " " "," strs))<br/> )<br/> (while (vl-string-search "," strs)<br/> (setq strs (vl-string-subst " " "," strs))<br/> )<br/> (while (vl-string-search ";" strs)<br/> (setq strs (vl-string-subst " " ";" strs))<br/> )<br/> (while (vl-string-search ";" strs)<br/> (setq strs (vl-string-subst " " ";" strs))<br/> )<br/> (while (vl-string-search " " strs)<br/> (setq strs (vl-string-subst " " " " strs))<br/> )<br/> (if (read strs)<br/> (progn<br/> (setq tmp_list '())<br/> (while (setq p (vl-string-search " " strs))<br/> (setq tmp_str (substr strs 1 p))<br/> (if (Read tmp_str)<br/> (setq tmp_list (cons tmp_str tmp_list))<br/> )<br/> (setq strs (vl-string-subst "" (substr strs 1 (1+ p)) strs))<br/> )<br/> (if (Read strs)<br/> (setq tmp_list (cons strs tmp_list))<br/> )<br/> (setq tmp_list (reverse tmp_list))<br/> )<br/> )<br/>)</font></p>
谢谢了
学习学习,为什么我使用时不带路径,就找不到文件呢
<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> (LOAD_DOSLIB) </p>
<p> (SETQ ALAN_S '("1,2133,4645" "2,123123,4564") ITEMLIST '() NUM 0)</p>
<p> (REPEAT (LENGTH ALAN_S) </p>
<p> (SETQ ITEMLIST (APPEND ITEMLIST (LIST (DOS_STRTOKENS (NTH NUM ALAN_S) ","))))</p>
<p> (SETQ NUM (+ NUM 1)) </p>
<p> )</p>
<p> (SETQ A (NTH 0 (NTH 1 ITEMLIST)) B (NTH 2 (NTH 1 ITEMLIST))) </p>
<p>)</p>
<p> </p>
<p> (DEFUN LOAD_DOSLIB (/ AC_VER);←依CAD版别载入DOSLIB函式库</p>
<p> (SETQ AC_VER (SUBSTR (GETVAR "ACADVER") 1 2))</p>
<p> (IF (NOT DOS_DRIVE) </p>
<p> (PROGN </p>
<p> (COND ((AND (= AC_VER "13")(WCMATCH (STRCASE (GETVAR "PLATFORM")) "*DOS*")) </p>
<p> (XLOAD "DOSLIB13") </p>
<p> ) </p>
<p> ((= AC_VER "12")(XLOAD "DOSLIB12"))</p>
<p> (T (ARXLOAD (STRCAT "DOSLIB" AC_VER)))</p>
<p> )</p>
<p> )</p>
<p> )</p>
<p> )</p>
<p> (PRINC "\nALAN 程式已载入 !")(PRINC "\n")</p>
<p> (PROMPT "----------------------------<< C:ALAN >>------------------------------\n") (PRINC) </p>
<p> </p>
<p> </p>
<p>上网搜寻DOSLIB就可下载 </p>
<p>版主的这句似乎有错:</p>
<p>(while (/= (setq s (substr i 2)) ",") </p>
<li> (setq tmp (strcat tmp (substr s 1 1)) i (1+ i))
<li> )</li>
<p> ----》</p>
<p><font face="Verdana">(while (/= (setq s (substr s2 i 2)) ",")<br/> (setq tmp (strcat tmp (substr s2 i 1)) i (1+ i))<br/> )</font></p>
先收藏了,以后会用上!!
看看,学习了