乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 118|回复: 8

视频

[复制链接]

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2010-6-30 06:18:06 | 显示全部楼层 |阅读模式
ARX博士说-
尽管我在2008年没有看到这种行为,也不知道极限是什么。为了测试,我返回了一个119717(任意的,只是生成的)字节的unicode字符串,它在Autolisp中打印得很好。有人对此有什么见解吗,比如这是在哪个版本的AC中更改的?谢了。
步骤1定义一个ADS可调用函数,让它生成一个大字符串并返回它,就像这样(未测试)代码0]
在Autolisp中调用ads函数代码1]

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2010-6-30 06:48:39 | 显示全部楼层
我在06中得到这个
  1. static int ads_ntest(void)
  2. {
  3.    const int slen = 2048;
  4.    char *x = (char *)malloc(slen*sizeof(char));
  5.    memset(x,'z',(slen-1)*sizeof(char));
  6.    acedRetStr(x);
  7.    free(x);
  8.    return (RSRSLT) ;
  9. }

回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2010-6-30 07:05:25 | 显示全部楼层

好的,谢谢。至少比503好
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2010-6-30 07:24:28 | 显示全部楼层
2002年也是如此,我敢打赌改变的是-> ARX
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2010-6-30 08:02:32 | 显示全部楼层

看起来它在32位'08版本('07??)中增长到0x66666667(1,717,986,919)。
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2010-6-30 08:05:34 | 显示全部楼层
所以看起来你对Acad 2000-2011很好,我还没有测试Bricscad
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2010-6-30 08:11:19 | 显示全部楼层
2002
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2010-6-30 08:24:45 | 显示全部楼层

我对该值不是百分之百确定,只是在调试中查看了acedRetStr的反汇编,并且有一个“mov eax,666 7h”。看着它收盘,我仍然不确定它有多大,或者这是否是正确的点。
  1. mov eax, 66666667h
  2. imul ebx
  3. sar edx, 2
  4. mov eax, edx
  5. shr eax, 1fh
  6. cmp eax, 1fh

回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2010-6-30 09:53:47 | 显示全部楼层
在 267,500,000 到 268,000,000 之间的某个位置是当前计算机的限制。可能与操作系统可以分配内存的一样多。
丹尼尔,仅供参考,您发布的代码对Unicode没有好处。当数组被复制到 ACHAR 时,autolisp 报告的内容是一个巨大的值,这与 unicode 的编码方式有关。 我理解并立即抓住了,但是我将数组填充更改为
  1. _tcsnset(x, _ACRX_T('z'), slen -1);
  2. x[slen - 1] = _ACRX_T('\0')

l
,并在接下来的15分钟内试图找出错误。同样,这是Unicode编码规则在起作用,与以前完全相同的错误,只是更加微妙。无论如何,将其更改为此以消除错误。
  1. std::fill(x, x + slen - 2, _T('z'));
  2. x[slen - 1] = _ACRX_T('\0'); // edit: ack, did it again. Don't do this. Use the proper accessors, you get the idea.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 18:45 , Processed in 0.376998 second(s), 82 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表