转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Delphi深度探索-CodeSite应用指南         ★★★★

Delphi深度探索-CodeSite应用指南

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2269 更新时间:2009/4/23 18:39:53
>

    通过添加EnterMethod和ExitMethod方法的调用,我们可以生成一个日志来记录方法何时被调用。

    看过例子之后,我们就会发现CodeSite的功能是非常强大的,我们只要简单的在程序中添加几条语句就可以生成非常详细的信息,并通过CodeSite Viewer以生动的图表表现出来。接下来,我们再来谈谈CodeSite的高级应用技术。

    发送消息到日志文件

    每个程序或多或少都会有Bug,不在这时发生,也会在那时发生,短时间内不发生,很长时间就可能发作,有时反复出现,有时非常偶然的才能被发现。如果一个人告诉你他写的程序在任何时候都没有任何问题,他一定是在撒谎。正是由于Bug的偶然性和隐蔽性,就使得我们往往很难重复用户提交的Bug,这就给我们调试程序并找到问题的原因产生了极大的障碍,而CodeSite能够发送消息到日志文件的特性就使得用户报告Bug变得更容易,他们只要把运行时生成的信息文件提交就可以了。相应的我们调试程序的工作也会变得更轻松,我们可以使用CodeSite Viewer来直观的分析错误发生的原因和位置。

    要想改变消息发送的目标,我们可以通过设定TCodeSite 对象的DestinationDetails属性来实现。这项功能要求客户的机器上必须安装了CodeSite Dispatcher,它属于CodeSite中可自由分发的部分。下面的要讲具体过程仍然是基于前面讲过的例子:

    (1)在窗体的OnCreate事件中添加下面代码:

    CodeSite.DestinationDetails := ''''File[Path=C:\FirstLog.csl]'''';

    (2)编译并余兴程序,这回我们在点击按钮后,消息就不再被发送给CodeSite Viewer而是发送到C盘的FirstLog.csl文件中。

    (3)使用CodeSite Viewer加载FirstLog.csl文件,这回我们就象先前一样察看被保存的CodeSite消息了。

    (4)如果我们想把消息同时发送到CodeSite Viewer和日志文件的话,只修改前面的代码为:

    CodeSite.DestinationDetails := ''''Viewer,File[Path=C:\FirstLog.csl]'''';

    发送用户定制的数据

    虽然TCodeSite 类提供了大量的处理不同数据类型的方法,但有时我们可能会需要发送某种自定义格式的数据信息。为此,TCodeSite 类定义了SendCustomData 方法,它支持发送任意的数据类型,并会根据一个自定义的格式器来格式化数据以便CodeSite Viewer可以正确的显示数据。

    首先我们需要创建一个TCSFormatter 对象的子类,然后重载对象的FormatData,InspectorType和TypeName方法。然后调用CodeSite对象管理器对象CSObjectManager的来注册新的TCSFormatter子类。此外,我们还需要调用RegisterCustomFormat方法来注册一个新的消息类型。

    下面是一个实际应用的例子,单元CSEmployee.pas中实现了一个TCSEmployeeRecord记录类型的定制格式器:

    unit CSEmployee;

    interface

    uses

      Windows, Graphics, CSIntf;

    const

      csmEmployeeSummary = csmUser + 1;

      csmEmployeeDetails = csmUser + 2;

    首先在Uses部分添加对CSIntf 单元的引用。第二步是为每一个格式器定义新的CodeSite消息类型常数,上面我们定义了两个常数,注意常数应该大于csmUser,但不能大过32,000。 

    type

      TCSEmployee = record

        LastName: string;

        FirstName: string;

        Address: string;

        City: string;

        State: string;

        ZipCode: string;

        PhoneNumber: string;

        HireDate: TDateTime;

        Salary: Currency;

        VacationDays: Integer;

        SickDays: Integer;

        Manager: Boolean;

      end;

    上面的记录就是我们要发送的自定义的数据类型。 

      TCSEmployeeSummaryFormatter = class( TCSFormatter )

      public

        function InspectorType: TCSInspectorType; override;

        procedure FormatData( var Data ); override;

        function TypeName: string; override;

      end;

      TCSEmployeeDetailsFormatter = class( TCSFormatter )

      public

        function InspectorType: TCSInspectorType; override;

        procedure FormatData( var Data ); override;

        function TypeName: string; override;

      end;

    上面是两个定制的格式器类的定义。第一个格式器将把TCSEmployee 记录格式化为一个文本格式,第二个格式化器将把TCSEmployee 记录格式化为网格样式。

    implementation

    uses

      SysUtils;

    {=========================================}

    {== TCSEmployeeSummaryFormatter Methods ==}

    {=========================================}

    function TCSEmployeeSummaryFormatter.InspectorType: TCSInspectorType;

上一页  [1] [2] [3] [4]  下一页


[ORACLE]Oracle PL/SQL Profiler应用指南  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台