自定义调试查看器分析 DateTimeVisualizer(一)

TDateTime类型以前只能看到float类型,xe后系统带的插件DateTimeVisualizer.pas可以看到字符串格式的时间,更清楚。

   TDateTime dt;

  dt = TDateTime::CurrentDateTime();

跟踪看到dt的字符串值。

但是自定义一个日期类Tmydt,就无法看到字符串格式了,看来DateTimeVisualizer.pas只支持系统现有的类DateTimeVisualizerTypes数组中描述的12种情况。

class Tmydt:public TDateTime
{
public:
     TDateTime& __fastcall operator =(const TDateTime& rhs)
    {Val = rhs.Val;  return *this;}
};
  DateTimeVisualizerTypes: array[0..12] of TDateTimeVisualizerType =
  (
    (TypeName: 'TDateTime'; TypeLang: tlDelphi; DateTimeType: dttDateTime;),
    (TypeName: 'TDate'; TypeLang: tlDelphi; DateTimeType: dttDate;),
    (TypeName: 'TTime'; TypeLang: tlDelphi; DateTimeType: dttTime;),//三种类型
    (TypeName: 'function: TDateTime'; TypeLang: tlDelphi; DateTimeType: dttDateTime;),//什么类型呢
    (TypeName: 'function: TDate'; TypeLang: tlDelphi; DateTimeType: dttDate;),
    (TypeName: 'function: TTime'; TypeLang: tlDelphi; DateTimeType: dttTime;),
    (TypeName: 'System::TDateTime'; TypeLang: tlCpp; DateTimeType: dttDateTime;),
    (TypeName: 'System::TDateTime &'; TypeLang: tlCpp; DateTimeType: dttDateTime;),
    (TypeName: 'TDateTime &'; TypeLang: tlCpp; DateTimeType: dttDateTime;),
    (TypeName: 'System::TDate'; TypeLang: tlCpp; DateTimeType: dttDate;),
    (TypeName: 'TDate &'; TypeLang: tlCpp; DateTimeType: dttDate;),
    (TypeName: 'System::TTime'; TypeLang: tlCpp; DateTimeType: dttTime;),
    (TypeName: 'TTime &'; TypeLang: tlCpp; DateTimeType: dttTime;)
  );

System::TDateTime c++builder必须加前缀System,否则和第一个重复了,另外不加前缀也识别不了。
<pre name="code" class="delphi">'System::TDateTime &'和'TDateTime &' 是为了解决引用类型参数查看。


 
    void TForm7::SetDT(System::TDateTime &val)
    {
        val++;
    }
通过Inspector的类型看到c++builder的定义确实要加前缀System::的


这个例子中区分c++和delphi,原因是delphi的值就在dt本身就可以看到,而c++builder里是在dt.val才能看到,所以区别处理了一些。

delpih就无需调用.val属性了

编写的调试查看器要支持c++builder,就要在GetSupportedType方法里返回类属性名称和GetSupportedTypeCount里返回所有兼容的类属性描述个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值