Series60 2nd/3rd平台上序列化TTime对象

当程序的配置文件数据项比较多,类型比较多时通常使用二进制的形式来保存数据,RReadStream和RWriteStream提供了多种数值型和描述符类型的输入输出方法,但是其它基本类型就需要自己处理一下了,比如TTime,Symbian系统中使用一个64位整型来保存日期和时间,这样当序列化TTimer对象是就可以取出这个64位数值进行保存了,可是接下来会发现RReadStream和RWriteStream根本没有提供64位整型的输入输出方法,这时需要我们把64位整型拆分成两个32位整型数然后进行保存,下面的代码演示了如何序列化一个TTime对象,并展示了Series 2nd和3rd平台上的不同处理方法:
 
void ExternalizeL(RWriteStream& aStream)
{
    TTime time;
    time.HomeTime();
    //Decomposes TTime object into two TUint32 objects.
       TUint32 low(0), high(0);
#if defined __SERIES60_3X__
low = I64LOW(time.Int64());
       high = I64HIGH(time.Int64());
#else
       low = time.Int64().Low();
       high = time.Int64().High();
#endif
       aStream.WriteUint32L( low );
       aStream.WriteUint32L( high );
}
 
void InternalizeL(RReadStream& aStream)
{
    //Two TUint32 objects combine to a TInt64 object for constructing a TTime object.
       TUint32 low(0), high(0);
       low = aStream.ReadUint32L();
       high = aStream.ReadUint32L();
      TInt64 timeVal( 0 );
#if defined __SERIES60_3X__
timeVal=MAKE_TINT64(high, low );
#else
       timeVal = TInt64( high, low );
#endif
       TTime time = timeVal;
}
补充:
64位整型在Symbian 8.1b之前和之后的版本上需要不同的处理方法,这是因为TInt64在Symbian 8.1b之前是以类的方式提供的,而在Symbian 8.1b之后则是内置的数据类型。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值