Board logo

Subject: CnWizards IDE 专家包与TNT组件冲突? [Print This Page]

Author: jAmEs_    Time: 2006-10-17 20:07     Subject: CnWizards IDE 专家包与TNT组件冲突?

我很久以前很想使用TNT组件开发程序,但是发现他好像与CnWizards IDE 专家包有冲突,后来没有用,今天又尝试一下,发现还是存在问题,不知道有没有人在用TNT开发的?
经常在做了窗口设计后出错,例如无效的指针操作错误。
希望能看看是不是与专家包冲突了,因为我关闭专家包试好像又不会有问题。
我做了简单测试:
建立窗口,上面增加Tnt组件,特别是PageControl,然后随便去改变组件属性,改变一次保存一次,然后就关闭工程,然后再打开,然后修改。。。一般第二次关闭就出现了。

[ Last edited by jAmEs_ on 2006-10-17 at 20:09 ]

Image Attachment: error.JPG (2006-10-17 20:07, 5.5 K) / Download count 1090
http://bbs.cnpack.org/attachment.php?aid=227


Author: Passion    Time: 2006-10-17 21:34

比较奇怪的问题,能否下载Debug版本帮助我们测试一下?
测试方法见置顶的帖子。
Author: jAmEs_    Time: 2006-10-17 21:44

发到master@cnpack.org了,是这个邮件地址吗?
Author: Passion    Time: 2006-10-17 22:07

是这个地址。收到了,谢谢,我们看看。
Author: Passion    Time: 2006-10-21 22:07

看了一下,像是某接口引用计数没处理好导致重复释放的问题。我们再仔细看看。
Author: jAmEs_    Time: 2006-10-22 10:09

呵呵,期待ing...
Author: jAmEs_    Time: 2006-10-29 10:15

再期待ing...
Author: Passion    Time: 2006-10-31 10:29

经过检查,似乎是TNT控件包自身的内存管理有部分问题。我们用 2ccc 上的版本测试可以重现这个问题,改用官方网站上的最新版本后就不会出错了。请问你的TNT是不是tntware上的最新版?

最新版本下载:
http://www.tntware.com/delphicontrols/unicode/
Author: jAmEs_    Time: 2006-11-1 09:48

是啊,我的就是TNT官方下载的啊。。。最新的
Author: jAmEs_    Time: 2006-11-4 20:27

...这个问题有没有再看看?
Author: Passion    Time: 2006-11-4 21:24

最新版的TNT暂时还没复现这个情况……
Author: jAmEs_    Time: 2006-11-7 09:40

那你们怎么调试这个的?我有空自己来调试
Author: Passion    Time: 2006-11-7 11:08

我们有多个法子,开始基本也是用我们的Debug版的专家DLL载入,看看异常捕捉的结果。或用IDE来调试IDE等。可参考网站上文档中心中的专家包调试说明书。
Author: VictorWoo    Time: 2006-11-7 11:23

能不能简单做个视频啊
Author: Passion    Time: 2006-11-7 16:32

说明书里头已经写的很详细了吧。要视频,可是比要现成代码要现成例子更狮子大开口啊。;)
Author: VictorWoo    Time: 2006-11-7 16:44

嘿嘿,实际上也就把录制打开,操作完停止录制就OK了
以前被mm烦得不行,找到了这个方法让她回去慢慢看就OK了。还在虚拟机做了一个重装系统的录像,一劳永逸不用整天跑了现在
key in文档和帮助可比录视频复杂的多哦
Author: jAmEs_    Time: 2006-11-8 14:41

VictorWoo说的也对的,实际上视频应该比写文字更加容易有效。。。当然这个要求不是必要的。
Author: VictorWoo    Time: 2006-11-8 15:34

心情好就搞搞,心情一般就拉倒,嘿嘿
Author: Passion    Time: 2006-11-8 18:30

视频不利于搜索整理归档哇。
Author: VictorWoo    Time: 2006-11-8 23:13

所以说作为茶余饭后消遣嘛,就不为难老大了哈
Author: jAmEs_    Time: 2006-11-11 10:03

有没有人用TNT的哦,我怎么就老出错?现在根本无法用。。。今天尝试调试看看。。。还没有正式编译过专家包,都不知道会不会编译不到呢。。。
Author: Passion    Time: 2006-11-11 10:14

专家包编译倒不难,打开相应的dpr编译应该就行了。
Author: jAmEs_    Time: 2006-11-11 10:16

编译一次OK
你调试时有没有确定大概是与哪个专家冲突了?
Author: jAmEs_    Time: 2006-11-11 15:29

终于跟到部分问题所在:
TabOrder那个专家,设计期显示Tab Order关闭即可。
产生问题的主要操作过程:
窗口使用一些Tnt组件,让它在打开状态,直接关闭单元编辑窗口或者工程。

曾经试过在DrawControlTabOrder函数增加两处调试,发现上面操作后,并不会来这里:
begin

{$IFDEF Debug}
  CnDebugger.LogMsg('TCnTabOrderWizard.DrawControlTabOrder');
{$ENDIF Debug}

  if Active and FDispTabOrder and not HookSvcs.IsDesignRoot(WinControl) and
     not HookSvcs.IsDesignContainer(WinControl) and
     (csDesigning in WinControl.ComponentState) and Assigned(WinControl.Parent)
     and (WinControl.Owner is TWinControl) and IsWindowVisible(WinControl.Handle) then
  begin

{$IFDEF Debug}
  CnDebugger.LogMsg('TCnTabOrderWizard.DrawControlTabOrder.2');
{$ENDIF Debug}

本来一开始这样处理正常的,后来继续调试,运行我的那个工程应用程序,马上退出应用程序,又再按上面的操作,倒,又出错了:(
今天先到这里了。。。
Author: Passion    Time: 2006-11-11 20:16

你这边的调试结果里,是不是TabOrder关闭显示就不会出现这个错误?
Author: Passion    Time: 2006-11-12 08:15

问题可以复现了,在高级设置中,把专家包设置成只有TabOrder专家创建的时候也仍然会出错。而让所有专家都不创建则不会出错。
Author: jAmEs_    Time: 2006-11-13 15:18

:(
Author: zjy    Time: 2006-11-13 15:47     Subject: 辛苦了!

没想到居然会是TabOrder的问题。有空我来检查一下,争取尽快修正这个问题。
Author: my58876448    Time: 2006-12-1 08:39     Subject: TURBODELPHI窗体中放个TSpTBXTitleBar放个TSpTBXPanel,编译一下,退出Delphi时会出错

TURBODELPHI窗体中放个TSpTBXTitleBar放个TSpTBXPanel,编译一下,退出Delphi时会出错(不编译我没试呢)
Author: my58876448    Time: 2006-12-12 08:25     Subject: 唉,什么时候能解决啊!!!

唉,什么时候能解决啊!!!
Author: jAmEs_    Time: 2006-12-29 16:33

有沒有什麼進展這個?
Author: Passion    Time: 2006-12-29 16:58

实在复杂,估计影响了内存的某些内容的排列,目前还没进展。
Author: jAmEs_    Time: 2006-12-29 18:12

真是辛苦你們了。。。
Author: Passion    Time: 2007-1-12 00:03

我们的277版的CnWizards针对这个冲突进行了一些修改,目前在我们的机器上问题似乎没再发生了。
能否下载帮我们多测试几下?
Author: my58876448    Time: 2007-1-12 08:38     Subject: 这两天我就试,辛苦了

辛苦了
Author: my58876448    Time: 2007-1-12 10:14     Subject: 初步使用没发现问题。将继续试用

初步使用没发现问题。将继续试用
Author: Passion    Time: 2007-1-12 10:49

To my58876448:
"TURBODELPHI窗体中放个TSpTBXTitleBar放个TSpTBXPanel,编译一下,退出Delphi时会出错"
——你说的是这个问题不复现了吧?

To jAmEs_:
TNTPageControl的问题也麻烦下载测测看?
Author: jAmEs_    Time: 2007-1-12 12:08

嘿嘿,辛苦你们了!
我已经下载使用中,暂时没有发现问题,真是太好了!
能否说说什么原因,呵呵
Author: Passion    Time: 2007-1-12 13:06

原因确实是TNT自身的挂接机制和CnWizards中挂接释放时的冲突,我们调整了释放顺序等。修改详情可以看看CVS的提交记录:
提交 [1698] : * [公共单元] 修正CnWizControlHook与TNT系列控件不兼容的问题,待验证。

链接地址:
http://www.cnpack.org:8008/cnpack/chngview?cn=1698
Author: my58876448    Time: 2007-1-12 15:02     Subject: 是的,我使用时遇到的问题已经没有了,辛苦辛苦

继续支持
Author: Passion    Time: 2007-1-13 00:08

两位,有空能否再下载278版帮我们测测?277中的修改只是暂时的,还有潜在的和其他第三方控件冲突的可能。278版中我们修改了内部挂接机制,希望能从根本上解决这个问题。
Author: my58876448    Time: 2007-1-13 08:34     Subject: 好的,今天可能没时间了,近两天就做

辛苦了
Author: jAmEs_    Time: 2007-1-13 09:39

使用中~~
Author: my58876448    Time: 2007-1-14 19:28

试了一下,278版中没问题




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0