微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Lisp:尝试从对话框中获取信息并将其与其他字符串一起添加时出现`stringtype nil`错误

如何解决Lisp:尝试从对话框中获取信息并将其与其他字符串一起添加时出现`stringtype nil`错误

该程序基本上从点描述中获取信息,并从文本项中获取文本并将文本项添加到点描述中。对话框允许用户选择一些参数,比如批次、批次和块,或其他。我已经在这个程序上工作了好几天了,它非常接近工作。我可以毫无问题地通过对话框,并且我可以用一些树获得所需的效果(那些只是从点和文本项目中获取信息并将它们像很多一样添加在一起)。当我要求用户输入一个数字时出现问题(在这种情况下它是一个块号,即块 1)在输入数字并选择点和一个文本项时,我得到字符串类型 nil 错误。现在我认为这可能是由于尝试添加一个包含空格“”的字符串,或者对话框中的输入可能不是字符串

这是我引用的 "C:\Program Files\JetBrains\CLion 2020.3.2\bin\cmake\win\bin\cmake.exe" --build C:\Users\filip\CLionProjects\SFML_try1\cmake-build-debug --target SFML_try1 -- -j 6 mingw32-make.exe[3]: *** No rule to make target '/SFML/lib/sfml-system-d.lib',needed by 'SFML_try1.exe'. Stop. mingw32-make.exe[2]: *** [CMakeFiles/SFML_try1.dir/all] Error 2 mingw32-make.exe[1]: *** [CMakeFiles/SFML_try1.dir/rule] Error 2 mingw32-make.exe: *** [SFML_try1] Error 2 CMakeFiles\Makefile2:94: recipe for target 'CMakeFiles/SFML_try1.dir/all' Failed CMakeFiles\Makefile2:101: recipe for target 'CMakeFiles/SFML_try1.dir/rule' Failed Makefile:137: recipe for target 'SFML_try1' Failed 函数$range = 'Sheet1!A1:A5'; $response = $service->spreadsheets_values->get($spreadsheetId,$range); $values = $response->getValues(); if (empty($values)) { print 'No data found.\n'; } else { foreach ($values as $row) { for ($i = 0; $i < sizeof($row); $i++) { echo $row[$i]; echo "<br/>"; } } }

这是从框中获取信息的程序:

strcat

以下是相关代码片段,不是整个程序

这里是组合函数

 (vlax-put-property p_obj 'rawdescription (strcat p_desc " BLOCK " type1 " " obj))

这是对话功能

 (action_tile "type1" "(setq type1 $value)")

这是嵌套的 DCL 代码

(defun c:txcm_block ( / c_doc p_desc p_obj t_obj t1 t_strg text1 ts obj type1 number)
(vl-load-com)
(while
(setq c_doc (vla-get-ActiveDocument (vlax-get-acad-object))
        p_obj (vlax-ename->vla-object (car (entsel "\nSelect Point: ")))
        t_strg (vlax-ename->vla-object (car (entsel "\nPick Text.. "))))
  (setq obj (vla-get-textstring t_strg))
          (setq p_desc(vlax-get p_obj 'rawdescription))
          (vlax-put-property p_obj 'rawdescription (strcat p_desc " BLOCK " type1 " " obj))
)
(princ)
)

任何帮助将不胜感激!我一直在互联网上,但我觉得我被卡住了。如果您需要更多信息,请告诉我!

解决方法

您似乎确实在 type1 中设置了变量 (c:nest2),并且您确实从 (c:txcm_block) 调用了 (c:nest2),但是 (c:txcm_block) 声明了 {{1 }} 作为其局部变量,因此 type1 在进入 type1 时设置为 NIL

(c:txcm_block) 不是字符串,所以 NIL 自然会抱怨和保释。

strcat中的局部变量声明列表中删除type1,并将其放到(c:txcm_block)中的局部变量声明列表中。

一般来说,要处理这种情况,请使用您的调试器"break on error",然后检查执行跟踪并检查变量的当前值兴趣(如 (c:nest2))。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。