诸位大侠,小弟想知道LISP中一个字符串的最大长度?程序很简单,大家都可以测试一啦!
想知道一个字符串变量,其最大字节数是多少?目的在于将TXT打包进VLX,想知道一个字符串变量支持的最大字节数。因为我使用的是vl-get-resource函数,担心字符串太长会溢出。风之影的经验是4096,请参考http://bbs.mjtd.com/forum.php?mod=viewthread&tid=90352
但我下面的程序已达到10000字节的长度却没出错,我的环境是:VLISP的Visul LISP 控制台
(setq i 0
str"Start"
str1 "k"
)
(while (< i 10000)
(print (strlen str))
(setq f(open "c:/test.txt" "a"))
(write-line (strcat (itoa(strlen str)) "" str) f)
(close f)
(setq str (strcat str str1))
(setq i (1+ i))
)
不管是 (print (strlen str))还是 (printstr)都能正确运行,最后生成的TXT有接近50M,电脑内存小,打不开。如果是 (print (strlen str))的话,我运行到10万也能正确运行,但机子比较老,就没往更高的数字测试。
控制台环境是否能代表实际环境,会不会控制台下能正确运行,实际程序中就不能运行了?
请各位不吝赐教!
测试了半小时,达到5万多个字符也没有出错,现在txt文件有150多M了 我以前打包过TXT文件,没啥问题,但是把文件在lsp写成字符串也没问题,问题是字符串太长编译为vlx就会出错 hao3ren 发表于 2012-7-3 16:34 static/image/common/back.gif
我以前打包过TXT文件,没啥问题,但是把文件在lsp写成字符串也没问题,问题是字符串太长编译为vlx就会出错
现在就是想知道最长支持多长的字符数,这样我们编程时也就有了依据 我的35000多行,每行约127个字符,分成4个变量
然后用STRCAT连起来没有出错,一个变量时出错。
我猜最大是 2G,或者不限 690994 发表于 2012-7-3 18:08 static/image/common/back.gif
我的35000多行,每行约127个字符,分成4个变量
然后用STRCAT连起来没有出错,一个变量时出错。
你的可以说明至少百万级的不出会错,反正早超越4096了,明天直接打包进VLX来测试,看看是否会不同 vectra 发表于 2012-7-3 20:49 static/image/common/back.gif
我猜最大是 2G,或者不限
我估计2G的可能性不大,今天我测试时使用2的N次方来做,在字符长度为一亿多时出错了 (setq s "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm"
)
(print (strlen s))
2305 此时还能实现,2306个字符就会提示错误: 输入的字符串太长,不行就自定义一个函数,将字符串按字节给它取出,组成字符串表了,但不知字符串表的容量有多大 革天明 发表于 2012-7-4 08:52 static/image/common/back.gif
(setq s "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm ...
昨天记错了,我是(setq a (list 一行 一行....))这样的,最后连起来。
页:
[1]
2