Descriptors的使用
来源:互联网 发布:淘宝该用户已被冻结 编辑:程序博客网 时间:2024/05/16 05:32
原文地址:http://wiki.forum.nokia.com/index.php/%E4%B8%AD%E6%96%87_Descriptors%E7%9A%84%E4%BD%BF%E7%94%A8
任何Symbian的开发者都要对Descriptors 有所了解,因为在这里,无论是普通文本还是二进制数据,都要用到它,开发任何的应用软件,游戏或多媒体程序,也都要接触到它,在这里做个简单的介绍,自己也能重温并学习一下。以下内容摘自newlc的数篇经典文章,整理后也会加入了自己的一些内容和观点。
Contents
1 相关类的使用
1.1 TPtrC<n>的使用
1.2 TBufC<n>的使用
1.3 HBufC的使用
1.4 TPtr的使用
1.5 TBuf<n>的使用
2 描述符主要特性
3 Litterals
相关类的使用
TPtrC<n>的使用
它指向了一组数据,但没有包含处理方法。它是从TDesC中直接继承下来的,只包括从父类中继承的那些函数,以及它自身的构造和设置函数。如何为使用这个对象呢?有如下几种方式:
生成一个空的TPtrC对象,并使用Set()函数将它指向一组数据。
在构造它时,就将数据传递进去。
例1:用TBuf和TBufC构造出TPtrC对象。
例2:用TText*构造TPtrC
例3:从另一个TPtrC中构造TPtrC
例4:从TPtrC中获得TText*
TBufC<n>的使用
例1:
TBufC<n>一般用来存储文本数据,而TBufC8<n>则用来存储二进制数据。尽管这里的对象表示数据是不能被修改的(因为有个后缀C代表了常量的意思),但仍然有两种方式可以用来修改数据:
*这里的数据可以用赋值的方式替换掉。
*使用Des()函数构造出一个TPtr对象,这样就可以用它来修改数据
下面是例子:
例1:
例2:通过使用Des()改变TBufC的数据
总结,这里TBufC时,我们通过Des()获得TPtr对象,因此获得了从TDes继承的一系列管理数据的方法。很好:)
HBufC的使用
当我们不知道数据大小时,我们可以使用它来处理,这里的C表示它是个常量,但同样有两种方式来修改它的数据。第一个是使用赋值操作,另一个也是使用可修改指针型Descriptor,如TPtr。
注意其大小可以通过ReAlloc函数来重新分配。
TPtr的使用
通过上面的介绍,我们已綺看到它的使用方式,这里可以看看如何来构造它:
*通过另一个TPtr对象
*通过TBufC,HBufC的Des()方法获取
*通过内存中的确定指针和大小长度来生成
TBuf<n>的使用
这个对象的操作和从TBufC<n>中通过获得TPtr对象的进行的数据操作一样,可以Copy,Delete和赋值等。
描述符主要特性
*以同样的方式对待字符串和二进制数据。
*数据可以存放在内存的任何区域上——ROM或RAM,在堆或栈上都可以。
*描述符使用指针和长度信息来描述它包含的数据,有些描述符还包括最大长度的信息。
所有的描述符都是从抽象类TDesC中派生的,他们可以分为三个大类:
*缓冲区描述符——数据做为描述符对象的组成部分而存在,描述符对象存放在程序的堆栈中:TBuf和TBufC,
*堆描述符——数据做为描述符对象的组成部分而存在,描述符对象存放在堆中:HBufC,
*指针描述符——描述符对象和它所表示的实际数据是分开存放的:TPtr和TPtrC.
如果对照C/C++语法来看:
*TPtrC可以被看作是const char*的使用
*TBufC可以被看作是char[]的使用
其他类没有相应对照语句。
TDes和TDesC是抽象类,因此你不可能实例化它们。它们的主要用途是做为函数的参数来描述字符串和二进制数据。
在这样的函数中,你应该按如下规则使用:
1、const TDesC& 表示只读的数据和字符串。
2、TDes& 表示可以被修改的数据和字符串。(我们所看到大多数涉及Descriptor参数的函数和方法都使用了他们来描述)
Litterals
字符串常量可以使用_L()或_LIT()宏来定义。
_L()可以生成一个指向字符值的地址(TPtrC),它綺常被用来传递字符串到函数中:
NEikonEnvironment::MessageBox(_L("Error: init file not found!"));
_LIT()可以生成个常量名,以便以后重复使用:
_LIT(KMyFile, "c:/System/Apps/MyApp/MyFile.jpg");
_LIT()宏的结果(就是上面的KMyFile)实际上是个文字描述符(literal descriptor)TLitC,它可以在任何使用TDesC&的地方使用。
用法
________________________________________
TDesC中最常用的函数如下:
Ptr(),用来获得描述符数据中的指针。
Length(),用来获得描述符数据中的字符数。
Size(),用来获得描述符数据中的字节数目。
Cpmpare()或操作符==、!=、>=和<=等专为比较描述符数据用的。
操作符[],可以被当作c/c++中一样,用来获得描述符字符串中的单个字符。
- 中文 Descriptors的使用
- Descriptors的使用
- Python中实例的attributes、Properties以及Descriptors
- 【翻译自mos文章】在unix/linux中使用文件描述符(File Descriptors)来找回被删掉的文件(数据文件or redo log)
- 在unix与linux中使用文件描述符(File Descriptors)来找回被删掉的文件(数据文件or redo log)
- HOG descriptors
- binary-descriptors
- low level descriptors and high level descriptors
- linux文件描述符open file descriptors与open files的区别
- A Short introduction to descriptors,附带SIFT描述子的基本原理
- 关于asyncio的ValueError: too many file descriptors in select()错误
- String and Descriptors
- Descriptors for function interfaces
- Virtual Address Descriptors
- Standard File Descriptors
- File Descriptors per Process
- Descriptors in Python
- JNI - Field Descriptors.
- XML介绍
- [转] 程序员的笑话
- 查询处理器未能用优化程序生成查询计划,因为查询无法同时更新聚集键和 text、ntex
- Oracle管理员的两种认证方法
- 贪心算法运用于背包问题(C++实现)
- Descriptors的使用
- Linux下GCC编程四个过程(1)
- Extjs实例开发中的一些总结,希望大家指点
- Linux下GCC编程四个过程(2)
- Linux下GCC编程四个过程(3)
- 大连的IT发展
- 精锐万能票据打印专家
- 带外(00B)数据
- 工作记录 initrd initramfs