potencjalek 发表于 2022-7-5 23:44:15

空字符

我尝试从Autocad中导出数据并执行外部应用程序
我有一个问题
我无法为该文件创建正确的空字符
我需要空字符来确定该文件中字符串的结尾
作用
(write-line (strcat "text" (chr 256)))
不在行尾创建空符号
我想创建的附加文件(请用记事本++打开它以查看空字符)
可以用lisp创建这样的文件吗?
null\u字符。txt文件

Lee Mac 发表于 2022-7-6 00:03:29

尝试以下操作
测试程序:
(defun c:test ( )
   (nullchartest "line-text" (vl-filename-mktemp "test" (getvar 'dwgprefix) ".txt"))
)

BIGAL 发表于 2022-7-6 00:04:33

当你写一行普通的文本时,如果你用十六进制转储,它实际上会有两个代码作为字符串OD和OA的结尾,这是回车和换行。如果你像一次读取一个数据库和一个字符一样读取文件,你能不检查这些代码吗。如果我记得正确的是(chr 13)

potencjalek 发表于 2022-7-6 00:22:28

非常适合我
非常感谢你
我认为是时候捐赠你的网站了

potencjalek 发表于 2022-7-6 00:25:45

还有一个问题
我试着改变一下你的函数,写多行
(defun nullchartest ( str txt / fso stm )
   (if (setq fso (vlax-create-object "scripting.filesystemobject"))
       (progn
         (vl-catch-all-apply
            '(lambda ( )
                   (setq stm (vlax-invoke fso 'createtextfile txt -1 0))
                   (vlax-invoke stm 'write (strcat str (chr 256)))
                   (vlax-invoke stm 'write (strcat "text for line 2" (chr 256)))   ;;;;;changes
                   (vlax-invoke stm 'close)
               )
         )
         (if (= 'vla-object (type stm))
               (vlax-release-object stm)
         )
         (if (= 'vla-object (type fso))
               (vlax-release-object fso)
         )
         (findfile txt)
       )
   )
)
但在结果中它只写了一行(第一行),为什么?

potencjalek 发表于 2022-7-6 00:39:05

好,主题结束
我想出来了
我忘了
(vlax-invoke stm 'write (chr 10));;; starting next line
行之间
 
谢谢大家的帮助

Lee Mac 发表于 2022-7-6 00:48:16

 
太好了,我很高兴它能按要求工作。
谢谢你的捐赠,我很感激
 
 
如您所知,新行需要回车和换行:
5
页: [1]
查看完整版本: 空字符