一.要使用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. 【阶段小结】协同开发——这学期的Git使用小结

    [阶段小结]协同开发--这学期的Git使用小结 一.Git简介 1. Git简单介绍 2. Git工作流程以及各个区域 3. Git文件状态变化 二.Git安装&Git基本配置 三.个人踩坑 ...

  2. 正则表达式(括号)、[中括号]、{大括号}的区别小结

    正则表达式(括号).[中括号].{大括号}的区别小结 </h1><div class="clear"></div><div class=& ...

  3. php中$_REQUEST、$_POST、$_GET的区别和联系小结

    php中$_REQUEST.$_POST.$_GET的区别和联系小结 作者: 字体:[增加 减小] 类型:转载 php中有$_request与$_post.$_get用于接受表单数据,当时他们有何种区 ...

  4. c cin.get()的用法小结_c语言中static 用法

    static在c里面可以用来修饰变量,也可以用来修饰函数. 先看用来修饰变量的时候.变量在c里面可分为存在全局数据区.栈和堆里.其实我们平时所说的堆栈是栈而不是堆,不要弄混. int a ; int ...

  5. linux 压缩文件夹格式,Linux下常见文件格式的压缩、解压小结

    Linux下常见文件格式的压缩.解压小结 .tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ...

  6. 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别

    简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他 ...

  7. flash 入门课知识小结

    一. 几种类型帧的小结:(关键帧.空白关键帧.普通帧) 1. 特点   帧--是进行flash动画制作的最基本的单位,每一个精彩的flash动画都是由很多个精心雕琢的帧构成的,在时间轴上的每一帧都可以 ...

  8. Eigen/Matlab 使用小结

    文章目录 [Eigen Matlab使用小结](https://www.cnblogs.com/rainbow70626/p/8819119.html) Eigen初始化 0.[官网资料](http: ...

  9. MATLAB【十三】————仿真函数记录以及matlab变成小结

    part one:matlab 编程小结. 1.char 与string的区别,char使用的单引号 '' ,string使用的是双引号"". 2.一般标题中的输出一定要通过 nu ...

最新文章

  1. CSS 设计模式一 元素
  2. java主线程控制子线程_CountDownLatch控制主线程等子线程执行完--Java多线程
  3. 微信小程序css3动画怎么写,微信小程序动画课程-通过wxss(css)来实现-animation 属性...
  4. java定时器写法_java定时器的写法是什么样?
  5. 前端学习(529):等分布局存在间距得实现得解决方案
  6. ASP.NET MVC V2 Preview 1 发布 期望VS有更好的表现
  7. java 生成apk包_Eclipse导出安卓apk文件的图文教程
  8. 实操《深入浅出React和Redux》第一期
  9. 网络安全系列之二十五 配置SSH
  10. 内存中的堆和栈(heap stack)
  11. 牛逼哄哄的 RabbitMQ 到底有啥用?
  12. idea的pom文件变灰色
  13. lj245a引脚功能图_JRC4558中文资料|引脚图及功能|应用电路图
  14. git提示Can‘t update: no tracked branch
  15. 利用python多个工作簿合并到一个工作簿
  16. zookeeper学习一-ZK简介
  17. oracle数据库如何计算周数,“Oracle”数据库的“周数计算”
  18. 史上最好听的十首纯音乐推荐
  19. 卷积神经网络学习路线(十三)| CVPR2017 Deep Pyramidal Residual Networks
  20. Adaptation---多屏幕多分辨率的支持和一些概念

热门文章

  1. 结合脑成像技术与人工智能,破除自杀的“诅咒”
  2. 永远不要辞职,除非……
  3. 为什么你那么努力,却很难突破技术瓶颈?
  4. 平均月薪 21.8k、中国开发者占比最高,揭晓 Go 语言真实现状!
  5. 吐血整理:手拿几个大厂offer的秘密武器!
  6. Kafka源码剖析 —— 网络I/O篇 —— 浅析KafkaSelector
  7. [Git] 写文章 史上最全文献检索、阅读及管理攻略
  8. Burpsuite学习(4)
  9. Oracle442个应用场景---------PL/SQL基础
  10. 麦司机博客项目技术选型-Java后端