一.要使用Codesite,需要引用csintf单元
二.CodeSite的基本方法
(一)AddCheckPoint方法
codesite.AddCheckPoint 加入监测点
(二)AddSeperator方法
codesite.AddSeperator 加入分隔线,用于分离消息
(三)Assert方法
codesite.Assert 检测表达式的结果是否为假
(四)Clear方法
codesite.Clear 清除消息
(五)EnterMethod方法
codesite.EnterMethod 加入进入方法的标记
(六)ExitMethod方法
codesite.ExitMethod 加入退出方法的标记(和EnterMethod合用)
(七)ResetCheckPoint方法
codesite.ResetCheckPoint 同AddCheckPoint,加入监测点,但其编号重新生成
(八)SaveLogFile方法
codesite.SaveLogFile 显示记录保存的文件位置
(九)ScratchPad方法
codesite.ScratchPad 显示手写板信息
例如:
procedure TForm1.Button1Click(Sender:TObject);
var
InfValue:Integer;
begin
for InfValue:=1 to 5 do
begin
Codesite.ScratchPad(1,Format('InfValue的值为:%d',[InfValue]));
Codesite.ScratchPad(2,Format('InfValue的值为:%d',[InfValue]));
end;
end;
(十)Send方法
此方法有很多可变参数,一般用SendMsg等替换
(十一)SendAssigned和SendAssignedEx
此方法用于判断变量是否已经赋值

三.使用时在要调试的地方写入代码:
(一)显示各种类型的信息
(1) 显示字符串 codesite.sendmsg
(2) 显示整型 codesite.sendinteger
(3) 显示浮点型 codesite.sendfloat
(4) 显示货币型 codesite.sendcurrency
(5) 显示颜色 codesite.sendcolor
(6) 显示集合类型 codesite.sendenum
(7) 显示DWord类型 codesite.senddword
(8) 显示日期类型 codesite.SendDateTime
(9) 显示字符类型 codesite.SendChar
(10) 显示布尔类型 codesite.SendBoolean
(11) 显示位图类型 codesite.SendBitmap
(12) 显示错误信息 codesite.senderror
(13) 显示异常信息 codesite.sendexception
(14) 将文件以十六进制显示 codesite.sendfileashex
(15) 发送规定格式异常信息 codesite.sendfmterror
(16) 发送规定格式字符串 codesite.sendfmtmsg
(16) 发送带标签的规定格式字符串 codesite.sendfmtnote
(17) 发送带警告的规定格式字符串 codesite.sendfmtwarning
(18) 显示Int64字符串 codesite.sendint64
(19) 将内存内容以十六进制显示 codesite.sendmemoryashex
(20) 显示内存使用情况 codesite.sendmemorystatus
(21) 显示带标签的字符串 codesite.sendnote
(23) 显示十六进制 codesite.sendnumashex
(24) 显示对象 codesite.sendobject
(25) 显示PChar内容 codesite.sendpchar
(26) 显示图形 codesite.sendpicture(格式限定为Bmp,Jpeg,Wmf,Icon,Emf)
(27) 显示点信息 codesite.sendpoint
(28) 显示指针内容 codesite.sendpointer
(29) 显示相关属性内容 codesite.sendproperty
(30) 显示矩形记录内容 codesite.sendrect
(31) 显示注册表内容 codesite.sendregistry
(32) 显示流信息 codesite.sendstream
(33) 显示流的十六进制信息 codesite.sendstreambyhex
(34) 发送字符串 codesite.sendstring
(35) 显示StringList codesite.sendstringlist
(36) 显示文本文件内容 codesite.sendtextfile
(37) 显示警告内容 codesite.sendwarning
(38) 显示变体内容 codesite.sendvariant
(39) 显示Windows句柄信息 codesite.sendwindowhandle
(40) 显示Windows错误 codesite.sendwinerror
四. 显示自定义格式信息 codesite.sendcustomdata,
示例:
首先我们需要创建一个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;
begin
Result := itStockStringList;
end;
实现一个自定义的格式化器的第一步是确定哪种类型的内置察看器将被用来察看格式化后的数据,这里使用的是字符串列表察看器。察看器类型将被FormatData方法所使用。 
procedure TCSEmployeeSummaryFormatter.FormatData( var Data );
var
EmpRec: TCSEmployee;
begin
EmpRec := TCSEmployee( Data );
AddLine( EmpRec.FirstName + + EmpRec.LastName );
AddLine( EmpRec.Address );
AddLine( EmpRec.City + , + EmpRec.State + + EmpRec.ZipCode );
AddLine( );
AddLine( Phone: + EmpRec.PhoneNumber );
AddLine( Hire Date: + DateToStr( EmpRec.HireDate ) );
AddLine( Salary: + Format( %m, [ EmpRec.Salary ] ) );
AddLine( );
AddLine( Vacation Days: + IntToStr( EmpRec.VacationDays ) );
AddLine( Sick Days: + IntToStr( EmpRec.SickDays ) );
if EmpRec.Manager then
AddLine( Manager: Yes )
else
AddLine( Manager: No );
end;
FormatData 方法是核心部分,注意传递给FormatData方法的Data参数是一个无类型的可变参数。这就意味着这个参数可以是任何数据类型的,通过格式注册过程,我们可以确保强制类型映射为自定义的数据记录,而不会发生转换错误。
转换数据类型后,我们就可以对数据进行格式化了,这里使用TCSFormatter 基类的 AddLine方法在字符串间添加分割线来进行格式化。 
function TCSEmployeeSummaryFormatter.TypeName: string;
begin
Result := TCSEmployee;
end;
TypeName方法的重载是可任选的,但通常我们可以用它来返回显示在消息列表中的字符串。
{=========================================}
{== TCSEmployeeDetailsFormatter Methods ==}
{=========================================}
function TCSEmployeeDetailsFormatter.InspectorType: TCSInspectorType;
begin
Result := itStockGrid;
end;
对于employeedetails格式器来说,命名网格察看器将被用来察看数据信息:
procedure TCSEmployeeDetailsFormatter.FormatData( var Data );
var
EmpRec: TCSEmployee;
begin
EmpRec := TCSEmployee( Data );
AddNameValuePair( LastName, EmpRec.LastName );
AddNameValuePair( FirstName, EmpRec.FirstName );
AddNameValuePair( Address, EmpRec.Address );
AddNameValuePair( City, EmpRec.City );
AddNameValuePair( State, EmpRec.State );
AddNameValuePair( ZipCode, EmpRec.ZipCode );
AddNameValuePair( PhoneNumber, EmpRec.PhoneNumber );
AddNameValuePair( HireDate, EmpRec.HireDate );
AddNameValuePair( Salary, Format( %m, [ EmpRec.Salary ] ) );
AddNameValuePair( VacationDays, EmpRec.VacationDays );
AddNameValuePair( SickDays, EmpRec.SickDays );
AddNameValuePair( Manager, EmpRec.Manager );
end;
这里为了在网格察看器中格式化数据,我们使用AddNameValuePair方法来实现。 
function TCSEmployeeDetailsFormatter.TypeName: string;
begin
Result := TCSEmployee;
end;
下面两个过程是用来封装对SendCustomData方法的调用的,这里对全局的TCodeSite对象实例CodeSite进行了调用:
{=====================}
{== Support Methods ==}
{=====================}
procedure CSSendEmployeeSummary( const Msg: string; EmpRec: TCSEmployee );
begin
CodeSite.SendCustomData( csmEmployeeSummary, Msg, EmpRec );
end;
procedure CSSendEmployeeDetails( const Msg: string; EmpRec: TCSEmployee );
begin
CodeSite.SendCustomData( csmEmployeeDetails, Msg, EmpRec );
end;
最后,不要忘了调用CSObjectManager.RegisterCustomFormatter方法把格式器注册到CodeSite对象管理器中。
initialization
CSObjectManager.RegisterCustomFormatter( csmEmployeeSummary,
TCSEmployeeSummaryFormatter );
CSObjectManager.RegisterCustomFormatter( csmEmployeeDetails,
TCSEmployeeDetailsFormatter );
end.

CodeSite使用小结 转载的更多相关文章

  1. 梯度提升树(GBDT)原理小结(转载)

    在集成学习值Adaboost算法原理和代码小结(转载)中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boos ...

  2. C#中SqlDataAdapter的使用小结---转载

    C#中SqlDataAdapter的使用小结 转载 叁木-Neil 最后发布于2018-06-07 21:29:39 阅读数 8275 收藏 展开 SqlDataAdapter对象 一.特点介绍1.表 ...

  3. Spring mvc中@RequestMapping 6个基本用法小结(转载)

    小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: @RequestMapping(value="/departments" ...

  4. PLSQL开发笔记和小结(转载)

    *****************************************   PLSQL基本结构 ***************************************** 基本数据 ...

  5. 集成学习值Adaboost算法原理和代码小结(转载)

    在集成学习原理小结中,我们讲到了集成学习按照个体学习器之间是否存在依赖关系可以分为两类: 第一个是个体学习器之间存在强依赖关系: 另一类是个体学习器之间不存在强依赖关系. 前者的代表算法就是提升(bo ...

  6. GATK3.2.2小结(转载)

    http://blog.csdn.net/skenoy/article/details/38346489 经过几天的摸索和网上资料的查询对GATK软件有点小心得,现总结如下: 1. fasta文件最好 ...

  7. div样式调整小结 转载

    1.多个div使用会自动换行,应该使用float属性  left : 对象浮在左边  right : 对象浮在右边 例如:  float: left  和 float: right 是两个div左右排 ...

  8. PYTHON HTML.PARSER库学习小结--转载

    前段时间,一朋友让我做个小脚本,抓一下某C2C商城上竞争对手的销售/价格数据,好让他可以实时调整自己的营销策略.自己之前也有过写爬虫抓某宝数据的经历,实现的问题不大,于是就答应了.初步想法是利用pyh ...

  9. Java String.split()用法小结(转载)

    在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1.如果用“.”作为分隔的话,必须是如下写法,String.split( ...

随机推荐

  1. Python核心编程--学习笔记--4--Python对象

    现在开始学习Python语言的核心部分.首先了解什么是Python对象,然后讨论最常用的内建类型,接下来讨论标准类型运算符和内建函数,之后给出对标准类型的不同分类方式,最后提一提Python目前还不支 ...

  2. 北京汽车官网经销商信息抓取(解析html标签)

    1.网站地址http://www.baicmotor.com/dealer.php 2.使用firefox查看后发现,此网站的信息未使用json数据,而是简单那的html页面而已 3.使用pyquer ...

  3. C 构造一个 简单配置文件读取库

    前言 最近看到这篇文章, json引擎性能对比报告 http://www.oschina.net/news/61942/cpp-json-compare?utm_source=tuicool 感觉技术 ...

  4. ToolBar存档

    上图是将本阶段要完成的结果画面做了标示,结合下面的描述希望大家能明白. colorPrimaryDark(状态栏底色):在风格 (styles) 或是主题 (themes) 里进行设定. App ba ...

  5. Android--调用系统的DownLoadManager去下载文件

    代码里面有详细的注释: /** * 该方法是调用了系统的下载管理器 */ public void downLoadApk(Context context,String url){ /** * 在这里返 ...

  6. MVC 中的@Html.DropDownList下拉框的使用

    MVC 中的下拉框 实现方式,下面为大家介绍一个我自己认为比较好用的实现方式,而二话不说直接上代码: 第一步: 后台代码 //公共的方法 //在每次需要展示下拉框的时候,需要调用一下这个方法 [数据源 ...

  7. Ubuntu14.04搭建LAMP环境

    安装Apache2                                                             sudo apt-get install apache2   ...

  8. 最大后验估计(MAP)

    最大后验估计是根据经验数据获得对难以观察的量的点估计.与最大似然估计类似,但是最大的不同时,最大后验估计的融入了要估计量的先验分布在其中.故最大后验估计可以看做规则化的最大似然估计. 首先,我们回顾上 ...

  9. 【每日scrum】NO.6

    Yesterday:组内各种乱八七糟的问题,还有自己的效率问题 Today:进行小范围的测试实验 Problem:在显示各景点构成的邻接矩阵的时候,第一次编译未出现任何错误的提示,但是在程序运行时,无 ...

  10. 制作C/C++动态链接库(dll)若干注意事项

    一.C\C++ 运行时库编译选项简单说明 问题:我的dll别人没法用 运行时库是个很复杂的东西,作为开发过程中dll制作需要了解的一部分,这里主要简单介绍一下如何选择编译选项. 在我们的开发过程中时常 ...