Symbian OS开发初级手册7 Descriptors

Symbian OS 中不使用我们所熟悉的c 字符串(char*) 或者c++ 的string. Symbian 的字符串是通过descriptor实现的。我们的第一个Symbian 程序,文字版Helloworld中是这样使用的: _LIT(KHelloWorldText,"Hello world!n");console->Printf(KHelloWorldText);_LIT()是一个宏,它声明了一个descriptor:KHelloWorldText,其内容是"Hello world!".下面console->Printf的参数就是一个descriptor. Descirptor是一个灵活的设计,它充分考虑到小型设备的各种局限性。 为此提供了很个类,有些是可以修改的,有些是不能修改的,有些放在stack上,有些放在heap上。 NewLC网站上有一个descriptor的结构图:http://www.newlc.com/article.php3?id_article=12 .其中包含了八个类,这些并不是全部的descriptor类,但是已经足够我们课程目前的使用。其中TDesC是最基本的类。 其他所有的descriptor类都是由它继承而来。 TDes是最基本的可以修改的类。凡是以C后缀的类都是不可修改的。

结构图下面是5各最常用的descriptor类的内存示意图。

TBufC<5> 中的5是它的长度,它表示的是"NewLC"这个字符串,是不可更改的。

TBuf<8> 8是它的最大长度,而当前只使用了5个字节,它的内容是可更改的,但是注意内容长度不可以大于他的最大长度TPtrC 是一个descriptor 指针类,它是一个不可修改的指针,指向不可修改的"NewLC"的地址。

TPtr 是一个可修改的descriptor指针类,指向可修改的"NewLC"的地址。

HBufC 的H代表Heap,是专门用来在Heap上创建字符串,其他的descriptor类的字符串一般都放在stack上。

一般来说要尽可能的使用heap内存,因为stack的内存要更有限,如果在stack上访大量的字符串就很容易导致内存不足。

这些类都由很多函数来使用,修改,查询他们的字符串,大家可以参考Developer Library中的API Reference. _LIT()还有一个更简单的版本,helloworld中的两行可以改写为:console->Printf(_L("Hello world!n"));

时间: 2024-10-31 14:47:09

Symbian OS开发初级手册7 Descriptors的相关文章

写给symbian os开发初学者的技巧

1.没有人强迫你,是你志愿选择了symbian os.2.这是最重要的问题,开发symbian 平台的软件到底有没有前途呢?每个symbian os的开发者都在考虑这个的问题,答案很简单,问问市场就知道了,只要你做的是精品,肯定会得到认可的.全球每年生产几亿部手机 ,如果都装有你写的软件,我想成就感要比win平台上的程序员自豪多了,前途嘛你自己说呢? 3.Symbian os 程序员应必备的素质=程序员应必备的素质+创新+市场意识. 4.关于开发环境最好使用vc.net 和 vc6来搭配,因为V

Symbian系统开发专题

symbian入门系列:applicatoin对象研究 symbian入门系列: framework symbian入门系列: document对象分析 Symbian学习总结-基础篇-Symbian C++中的异常处理 Symbian框架 Symbian游戏编程应用程序开发 Symbian开发工具Carbide简介 Symbian内存管理的二十二条军规 Symbian学习笔记(21)--原来还有这个工具wsdl2cpp,访问webserv Symbian学习笔记(20)--用gSOAP更简单地

Symbian OS SDK开发基础

安装和配置 安装和配置 Series 60 2nd SDK的C++开发环境有点烦琐,网上也有几中不一样的做法.但万变总是不离其宗,刚开始的时候看的蒙蒙胧胧,研究了几天总算有点眉目了,现在写点东西算是给自己一个总结,也给大家一个借鉴. 首先是安装前的准备工作. 我安装SDK的是Series 60 2nd Edition SDK for Symbian OS, Supporting Feature Pack 2 For C++, Chinese Version.下载地址:http://www.for

Symbian OS S60开发环境的搭建

1.安装相关SDK及VC Nokia根据手机的屏幕大小和价格高低把手机分成了多个系列,现在使用的系列有:Series 40.Series 60.Series 80 和Series 90.60系列采用Symbian os 6.1,然后又根据手机屏幕的特点对UI做了一些修改,这个被修改了的Symbian就被称为Nokia的60系列平台.使用60系列的手机型号包括:Nokia 6670. Nokia 6630. Nokia 6260 .Nokia N-Gage QD .Nokia 7610 .Noki

Symbian OS及通讯技术术语全解(上)

Symbian OS和一些相关资料,内容不少,而且有些很专业.刚刚才收集整理了一份技术术语白皮书,在这儿先放上来,大家共享. 1G In mobile telephony, first-generation systems were analog, circuit-switched.Voice links were poor, handoff unreliable, capacity low, and security non-existent.1G systems are not now un

诺基亚接手Symbian操作系统开发承诺不放弃

CNET科技资讯网 11月9日 国际报道:诺基亚当地时间周一表示,该公司将接手Symbian智能手机操作系统的开发工作,并承诺不会放弃该平台. Symbian基金会将负责Symbian操作系统的许可工作. 在三星和索尼爱立信宣布放弃Symbian,转向其他智能手机操作系统平台后,Symbian的命运引起广泛猜测.但是,诺基亚仍然坚定地支持Symbian.诺基亚在一份声明中称,Symbian基金会职责的变化不会影响该公司的产品发布计划. 据市场研究公司CCS Insight称,这一变化并不让外界感

Chrome OS开发版更新 带来多显示器支持

Google最近正在大力为其Chromebooks做市场推广,产品主要由三星和Acer制造.我们注意到该公司在时代广场为基于Chrome OS的笔记本作了一个临时的展出,与上月微软在Windows 8发布时所作的事情类似.当下的Chrome OS还不能在将屏幕内容扩展到另一台显示器,而据MaximumPC.com的报道称,Google终于在最近的一个开发人员更新里,为Chrome OS设备带来了多显示器的支持. 该更新还包含了同样由三星制作的Chromebox desktop PC. 更新还包括

Symbian OS基本数据类型

Symbian OS使用的是面向对象的C++,但是又和标准的C++有一些区别.比如Symbian OS没有标准的异常处理(Exception),因为设计Symbian OS的时候还C++还没有把异常处理标准化.所以Symbian设计了自己得异常处理机制: TRAP, leave.另外就是今天要讲的基本类型.Symbian 基本上不使用任何标准的C++基本类型,众所周知,不同的C++编辑器对int, unsigned int的长度理解不同,所以Symbian OS中使用 TInt8,TInt16,

Symbian OS中的RArray类的排序功能

RArray类,属于symbian OS提供的基础容器类,并且是比较重要和常用的一个. 如果从名字来看这是一个数据类,功能貌似和 MFC的CArray,stl的vector差不多吧?如果这么想就错了,RArray是个泛型数组容器类,但是功能比CArray vector 提供的要多. 尤其是他提供的排序和查找功能,其实现方法比较诡异,对初学者来说容易造成迷惑.个人认为这个设计比较蹩脚,至于为什么会这样,我想不出,已经写信给作者咨询了,不过还没得到答复. RArray的排序是这样的,它规定数组中每个