CnPack Forum


 
Subject: 发现MSDN专家设置的一个bug
crazycock
新警察
Rank: 1



UID 33763
Digest Posts 0
Credits 10
Posts 4
点点分 10
Reading Access 10
Registered 2007-12-12
Status Offline
Post at 2007-12-12 11:04  Profile | Blog | P.M. 
发现MSDN专家设置的一个bug

首先表达一下对CnWizards的赞美,这个工具实在是太太太、太好用了!一直都在用它。

我的机器是WinXP+D7,有一个版本曾经不太稳定,后来保持一个低版本很久了,昨天发现升级到RC2了,还增加了梦寐以求的begin..end匹配,非常高兴。但是发现以前不能用的MSDN专家还是不能用,于是打开了一份以前的代码cnwizards_0.8.1.252_src,看了一下里面的代码,发现了一个导致我不能正确使用MSDN专家的bug,这个bug应该现在还存在,因为RC2里面我还遇到这个问题。

我的机器上查看到的MSDN列表为如下:

MSDN Library - Visual Studio 6.0
Visual Studio .NET Combined Help Collection
MSDN Library for Visual Studio 2005 CHS

我选择第一个,其实就是MSDN98,但是程序中的代码如下:

function TCnMsdnWizard.IsSelectOldMsdn(SelectedText: string): Boolean;
var
  MsdnInfo: TCnMsdnInfo;
  i: Integer;
begin
  Result := False;

  for i := 0 to FMsdnList.Count - 1 do
  begin
    MsdnInfo := TCnMsdnInfo(FMsdnList.Items);
    if MsdnInfo.FCaption = SelectedText then
    begin
//      if AnsiContainsText(SelectedText, 'Visual Studio 6.0') and
//        AnsiContainsText(SelectedText, SMsdnLibrary) then // Msdn 98
//      begin
//        Result := True;
//        Break;
//      end;    屏蔽的代码为自己加的,以解决这个问题。
      if AnsiContainsText(SelectedText, '2000') and
        AnsiContainsText(SelectedText, SMsdnLibrary) then // Msdn 2000
      begin
        Result := True;
        Break;
      end;
    end;
  end;
end;很显然,返回的是False,于是调用RunMsdnDotNet,就错了。

另外,我的机器如果选择MSDN2005的话,会提示“连接服务程序异常”,好像是DExplore里面的问题,还没有细看代码,如果有朋友也遇到过类似问题,麻烦指点我一下,以便少走弯路。

[ 本帖最后由 crazycock 于 2007-12-12 11:10 编辑 ]
Top
crazycock
新警察
Rank: 1



UID 33763
Digest Posts 0
Credits 10
Posts 4
点点分 10
Reading Access 10
Registered 2007-12-12
Status Offline
Post at 2007-12-12 11:23  Profile | Blog | P.M. 
另外咨询一个问题,我一直都是用CnDebugger来输出信息来调试的,不知道有没有办法直接运行进行单步的?我试了一次好像会有错误的。
Top
crazycock
新警察
Rank: 1



UID 33763
Digest Posts 0
Credits 10
Posts 4
点点分 10
Reading Access 10
Registered 2007-12-12
Status Offline
Post at 2007-12-12 11:57  Profile | Blog | P.M. 
经过调试,发现问题的根源

procedure TDExploreAppObj.Connect;
var
  punk: IUnknown;
begin
  if FIntf = nil then
  begin
    punk := GetServer;    // <-------这句话发生了异常
    ConnectEvents(punk);
    Fintf:= punk as Help;
  end;
end;

GetServer里面用的是ckRunningOrNew模式,发现FServerData对象好像都不可用,没有初始化。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6812
Posts 3579
点点分 6812
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-12-13 08:57  Profile | Blog | P.M. 
非常感谢您的报告和修正,我们会检查的。

关于单步调试问题,请参考网站上的专家包调试说明书。http://www.cnpack.org 的文档中心里头的IDE专家包分类里头有。
Top
crazycock
新警察
Rank: 1



UID 33763
Digest Posts 0
Credits 10
Posts 4
点点分 10
Reading Access 10
Registered 2007-12-12
Status Offline
Post at 2007-12-13 10:44  Profile | Blog | P.M. 
谢谢老大的指点。想问个问题,CnWizards出来后,Delphi7变得非常好用了,但是和vc比起来,有一个问题一直没有好的解决途径,就是如何方便浏览内存某个地址?在VC中,Alt+6很容易就可以打开Memory调试窗口,Watch窗口可以查看变量或者数组的内存地址,在Memory中可以直接看这段地址的内容,但是在Delphi7里面我一直没有找到好的相关的方法,只能通过查看CPU,然后跳到变量地址,然后再跳到变量指向的内存地址,很麻烦。不知道大家怎么做的?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6812
Posts 3579
点点分 6812
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-12-13 23:55  Profile | Blog | P.M. 
Delphi里头确实没有太方便的方法,除了打开CPU窗口看内存。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6812
Posts 3579
点点分 6812
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-12-14 12:16  Profile | Blog | P.M. 
我们已经参照您的代码,修改了MSDN专家中关于98部分的判断。等CnWizards 0.8.2.352的每日构建版出来,烦请下载验证一下?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6812
Posts 3579
点点分 6812
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-12-15 13:36  Profile | Blog | P.M. 
352版已出,烦请下载验证是否支持MSDN 98?

http://www.cnpack.org/downbuilds.php?lang=zh-cn
Top
kendling (小冬)
高级版主
Rank: 8Rank: 8
MyvNet


Medal No.1  
UID 703
Digest Posts 5
Credits 978
Posts 580
点点分 978
Reading Access 101
Registered 2005-2-18
Location 广东
Status Offline
Post at 2007-12-19 13:44  Profile | Site | Blog | P.M.  | QQ | Yahoo!
老大真迅速。




小冬
http://MyvNet.com
Top
 




All times are GMT++8, the time now is 2024-9-20 06:02

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.010850 second(s), 9 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP