找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 327|回复: 3

[求助]:错在哪里?

[复制链接]
发表于 2002-11-25 23:40:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
获取其他ARX外部函数的一个例子
本来是想也在定义为外部函数的
测试结果:
acedRetStr("pass!");
运行通过,然后有出错报告如下
错误: ADS 请求错误
知道大概什么原因?


  1. // This is command 'DD_GETO'
  2. //调用ARX外部函数
  3. int dd_geto()
  4. {
  5.         // TODO: Implement the command
  6.         resbuf* pArg = acedGetArgs();
  7.     struct resbuf *result=NULL ,*list;
  8.        
  9.     list=acutBuildList(RTSTR , "dd_princ",RTSTR , "测试ARX外部数据的输入" ,RTSHORT , 1 ,RTREAL , 2.0 ,0);
  10.         if(list)
  11.         {
  12.                 acedInvoke(list,&result);
  13.          if(result) acutPrintf(  result->resval.rstring );
  14.         
  15.                  acutRelRb(result);
  16.         }

  17.         acutRelRb(list);
  18.         acutRelRb(pArg);

  19.       acedAlert ("pass!");
  20.        acedRetStr("pass!");

  21.         return RTNORM;
  22. }

复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-25 23:53:17 | 显示全部楼层

Re: [求助]:错在哪里?

最初由 fylinwater 发布
获取其他ARX外部函数的一个例子
本来是想也在定义为外部函数的
测试结果:


要想调用其他ARX里面定义的外部函数,那个外部函数必须在那个程序里面用 ads_regfunc 注册,并且你的ADSRX程序必须返回RSRSLT,RSERR 代替RTNORM,RTERROR。

acedInvoke(....)联机帮助写的很清楚:

  1. [font=courier new]
  2. If a function is meant to be called with acedInvoke(), the application that defines it [color=blue]should register
  3. the function by calling acedRegFunc().[/color] (In some cases the acedRegFunc() call is required,
  4. as described later in this section.) When acedRegFunc() is called to register the function,
  5. ObjectARX calls the function directly, without going through the application's dispatch loop.
  6. To define the function, call acedRegFunc().

  7. An external function handler registered by acedRegFunc() must have no arguments
  8. and must return an integer (which is one of the application result codes-either [color=blue]RSRSLT or RSERR). [/color]

  9. static int funcload()
  10. {
  11.     int i;

  12.     for (i = 0; i < ELEMENTS(func_table); i++) {
  13.         if (!acedDefun(func_table[i].func_name, i))
  14.             return RTERROR;
  15. [color=blue]        if (!acedRegFunc(func_table[i].func, i))  [/color]
  16.             return RTERROR;  
  17.     }
  18.     return RTNORM;
  19. }
  20. [/font]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-25 23:56:52 | 显示全部楼层
另外,你多看看ARX的对象开发方法吧,ADSRX函数不必要的地方不要用了,浪费精力,功能不强,容易出错。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-25 23:57:19 | 显示全部楼层
对 这些都通过了包括这个外部函数的处理都有了结果
result->resval.rstring  就是 "测试ARX外部数据的输入"
都没错
连最后第二行代码acedRetStr("pass!");
都执行了啊
////////
晓东
那ARX的方法怎么实现不同ARX函数的相互调用那??
我也见那ADS烦啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-6-27 07:28 , Processed in 0.250847 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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