This page was last modified 19:08, 24 June 2008.
Series60 2nd/3rd平台上序列化TTime对象
From Forum Nokia Wiki
当程序的配置文件数据项比较多,类型比较多时通常使用二进制的形式来保存数据,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之后则是内置的数据类型。
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Nokia 3250 - Which Series60 Generation does it Support? | knight_search | General Discussion | 1 | 2005-10-02 17:06 |
| Can you recommend a developer friendly Nokia phone ? | lbk003 | Mobile Java General | 5 | 2003-12-11 13:24 |
| debuggin in vc++ 6.0 for series60 programs | vinayakak | General Symbian C++ | 4 | 2004-12-29 19:28 |
| Прорисофка mif файла | fly9296404 | Russian Developer Forum - Форум Российских разработчиков | 3 | 2008-05-27 06:11 |
| Series60 vs UIQ | bwchen | Symbian | 1 | 2003-07-11 06:51 |
