TC官方合作论坛

 找回密码
 立即注册
查看: 2739|回复: 12

[已解决] 求助对象释放问题?

[复制链接]
发表于 2015-5-28 17:26:20 | 显示全部楼层 |阅读模式

马上加入TC

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

x
本帖最后由 chihoutam 于 2015-5-28 17:28 编辑

我在写大漠注册方法的时候遇到一个问题:
系统中已经有注册大漠的话就判断版本号,如果不符合要求就卸载插件重新注册
可是重新注册成功之后.创建一个新对象 输出的版本号还是旧的
但其实系统中已经注册好新的了.为什么会这样呢?

当然你可以叫我一上来就重新注册新版本的dm..效率也不会低多少..可是我只想知道为什么哈

请看源码:
  1. function reg()
  2.     if (isregister("dm.dmsoft"))
  3.         var dm = com("dm.dmsoft")
  4.                 var ver = dm.ver()
  5.         traceprint ("系统:" & ver)
  6.         if (ver=="5.1423")
  7.             return 1
  8.         else
  9.             var ret = regdll("dm.dll",false) //卸载插件
  10.             //Set dm =nothing 释放对象
  11.         end
  12.     end
  13.     var dmPath = getrcpath("rc:dm.dll")
  14.     var ret = regdll(dmPath,true)
  15.     var haha = com("dm.dmsoft")
  16.     var nver = haha.ver()
  17.     traceprint("新注册:"& nver)
  18. end
复制代码

输出>> "系统:5.1417"
输出>> "新注册:5.1417"

TC版本号: 5.1
回复

使用道具 举报

发表于 2015-5-28 17:45:22 | 显示全部楼层
3楼应该知道,让3楼回答
回复 支持 反对

使用道具 举报

发表于 2015-5-28 17:57:22 | 显示全部楼层
4楼应该明白,让4楼回答
回复 支持 反对

使用道具 举报

发表于 2015-5-28 18:28:27 | 显示全部楼层
卸载后关闭程序再运行,这就跟你注册了 创建对象后 再卸载后,对象不会失效一个原理,因为你这个进程已经是使用旧版本dll,已经在你的进程内存中了,不想重新启动,你可以试着手动卸载进程中的dll试试
回复 支持 反对

使用道具 举报

发表于 2015-5-28 18:29:19 | 显示全部楼层
5楼应该明白,让5楼回答(因为俺看不懂英文,也不解释英文)
回复 支持 反对

使用道具 举报

发表于 2015-5-28 19:56:08 | 显示全部楼层
本帖最后由 这论坛不错 于 2015-5-28 20:01 编辑

可能是旧的版本正在使用中,新的就没有注册成功~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-28 22:08:47 | 显示全部楼层
这论坛不错 发表于 2015-5-28 19:56
可能是旧的版本正在使用中,新的就没有注册成功~

已经注册成功了哦...
因为如果我关闭脚本 再启动就不会重新注册了......直接输出新的版本号
可能是第一次创建对象的时候TC 吧 dm.soft 放到内存了..所以之后怎么创建都是旧版...关闭程序把内存释放才能用新的dm.dll 创建
回复 支持 反对

使用道具 举报

发表于 2015-5-28 22:20:43 | 显示全部楼层
chihoutam 发表于 2015-5-28 22:08
已经注册成功了哦...
因为如果我关闭脚本 再启动就不会重新注册了......直接输出新的版本号
可能是第一次 ...

如果系统的是旧版的dm,你用新版的dm注册了的话,注册完要好像是要重开脚本才会生效
回复 支持 反对

使用道具 举报

发表于 2015-5-28 22:20:47 | 显示全部楼层
chihoutam 发表于 2015-5-28 22:08
已经注册成功了哦...
因为如果我关闭脚本 再启动就不会重新注册了......直接输出新的版本号
可能是第一次 ...

如果系统的是旧版的dm,你用新版的dm注册了的话,注册完要好像是要重开脚本才会生效
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-28 22:25:20 | 显示全部楼层
jimye0526 发表于 2015-5-28 18:28
卸载后关闭程序再运行,这就跟你注册了 创建对象后 再卸载后,对象不会失效一个原理,因为你这个进程已经是 ...

不想重启,如何手动卸载进程中的dll 呢?
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-6-9 23:17 , Processed in 0.040801 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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