明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3492|回复: 14

诸位大侠,小弟想知道LISP中一个字符串的最大长度?程序很简单,大家都可以测试一啦!

  [复制链接]
发表于 2012-7-3 14:55:59 | 显示全部楼层 |阅读模式
想知道一个字符串变量,其最大字节数是多少?目的在于将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))还是 (print  str)都能正确运行,最后生成的TXT有接近50M,电脑内存小,打不开。如果是 (print (strlen str))的话,我运行到10万也能正确运行,但机子比较老,就没往更高的数字测试。
控制台环境是否能代表实际环境,会不会控制台下能正确运行,实际程序中就不能运行了?
请各位不吝赐教!

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2012-7-3 15:49:56 | 显示全部楼层
测试了半小时,达到5万多个字符也没有出错,现在txt文件有150多M了
发表于 2012-7-3 16:34:18 | 显示全部楼层
我以前打包过TXT文件,没啥问题,但是把文件在lsp写成字符串也没问题,问题是字符串太长编译为vlx就会出错
 楼主| 发表于 2012-7-3 16:53:13 | 显示全部楼层
hao3ren 发表于 2012-7-3 16:34
我以前打包过TXT文件,没啥问题,但是把文件在lsp写成字符串也没问题,问题是字符串太长编译为vlx就会出错

现在就是想知道最长支持多长的字符数,这样我们编程时也就有了依据
发表于 2012-7-3 18:08:47 | 显示全部楼层
我的35000多行,每行约127个字符,分成4个变量
然后用STRCAT连起来没有出错,一个变量时出错。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2012-7-3 20:49:50 | 显示全部楼层
我猜最大是 2G,或者不限
 楼主| 发表于 2012-7-3 21:56:17 | 显示全部楼层
690994 发表于 2012-7-3 18:08
我的35000多行,每行约127个字符,分成4个变量
然后用STRCAT连起来没有出错,一个变量时出错。

你的可以说明至少百万级的不出会错,反正早超越4096了,明天直接打包进VLX来测试,看看是否会不同
 楼主| 发表于 2012-7-3 21:58:12 | 显示全部楼层
vectra 发表于 2012-7-3 20:49
我猜最大是 2G,或者不限

我估计2G的可能性不大,今天我测试时使用2的N次方来做,在字符长度为一亿多时出错了
 楼主| 发表于 2012-7-4 08:52:55 | 显示全部楼层
(setq       s "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm"
)
(print (strlen s))
2305 此时还能实现,2306个字符就会提示错误: 输入的字符串太长,不行就自定义一个函数,将字符串按字节给它取出,组成字符串表了,但不知字符串表的容量有多大
发表于 2012-7-4 12:31:52 | 显示全部楼层
革天明 发表于 2012-7-4 08:52
(setq       s "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm ...

昨天记错了,我是(setq a (list 一行 一行....))这样的,最后连起来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 10:13 , Processed in 0.217763 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表