Symbian开发入门
2010-06-03 23:07:00 来源:WEB开发网? MaxLength()
可修改的描述符TDes实现的这个方法返回描述符的最大长度。
? SetLength()和SetMax()
前者用来设置描述符的长度,这个长度值必须是小于描述符的最大长度的,否则会引起系统异常。后者将描述符的当前长度设置成最大值,注意,它不并不能扩展描述符数据区的长度。
? Zero()和FillZ()
前者将描述符的长度设置为0,而后者是用0来来填充描述符的内容置。如果您要用其它字符填充描述符的内容,可用Fill()方法。这个方案类似于C语言中的memset()函数。
? Copy()
TDes 实现了一系列的重的Copy() 方法, 下面是其中的两个:
IMPORT_C void Copy(const TDesC8 &aDes);
IMPORT_C void Copy(const TDesC16 &aDes);
这些方法将参数描述符中的数据拷贝到目标描述符中,同时为目标描述符设置新的长度。如可源描述符的长度超过目标描述符的最大长度,将会引发一个系统异常。
3.10 使用HBufC 堆描述符
我们已经讨论过描述符的一些特性,现在来关注一下使用描述符时经常容易范的错误。
首先,我们将创建和使用堆描述符HBufC。前面提到过,在已有的描述符上调用Alloc()或AllocL()方法,可以产生一个新的HBufC。这里是一个例子:
void CSampleClass::UnnecessaryCodeL(const TDesC& aDes)
{
iHeapBuffer = HBufC::NewL(aDes.Length());
TPtr ptr(iHeapBuffer->Des());
ptr.Copy(aDes);
...
// 以上代码完全可以被下面的代替,下面代码更有效率。
iHeapBuffer = aDes.AllocL();
}
Another common way to introduce complexity occurs in the opposite
direction, that is, the generation of TDesC& from a heap descriptor.
当从一个堆描述符产生一个TDesC&的时候,也容易范一个错误,这个错误同样为代码增加了复杂性。代码如下所示:
const TDesC& CSampleClass::MoreAccidentalComplexity()
{
return (iHeapBuffer->Des());
// 以上代码完全可以写成
return (*iHeapBuffer); //这样更简洁高效
}
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››Symbian S60 SocketConnection参数
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››Symbian一个活动对象的测试例子
- ››Symbian ListBox控件
- ››Symbian下自动切换SDK的批处理代码
更多精彩
赞助商链接