开发学院手机开发Symbian 开发 Symbian开发入门 阅读

Symbian开发入门

 2010-06-03 23:07:00 来源:WEB开发网   
核心提示:Length() 的两倍,? MaxLength()可修改的描述符TDes实现的这个方法返回描述符的最大长度,Symbian开发入门(18),? SetLength()和SetMax()前者用来设置描述符的长度,这个长度值必须是小于描述符的最大长度的,iHeapBuffer = aDes.AllocL();}Anoth
Length() 的两倍。

? 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); //这样更简洁高效

}

上一页  13 14 15 16 17 18 19 20 21  下一页

Tags:Symbian 开发 入门

编辑录入:coldstar [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接