Symbian 逐步深入
2010-03-26 04:24:00 来源:WEB开发网RBuf使用的例子:
RBuf myRBuf;
LIT(KHelloWorld,”helloWorld”);
myRBuf.CreateL(KHelloWorld);
使用例子2:
HBufC* mHBuf= HBufC::NewL(20);
RBuf myRBuf;
myRBuf.Assign(mHBuf); //取得控制权
当myRBuf要重新指定的时候,就需要调用Close()方法。
当RBuf重新分配内存的时候,需要如下的步骤:
myRBuf.CleanUpPushL();//RBuf类推入清除栈, 清除工作在调用Close()(或者是调用CleanupStack::PopAndDestroy()时进行。
myRBuf.ReAllocL(newLength);
CleanUpStack::Pop();
_LIT与_L
其相当于 static const char[], 看如下的语句:
_LIT(KThis,”this”);//则_LIT宏在二进制代码中构建一个TLitC16类型的对象。存储字符串,如”this”. _LIT、_L宏在 e32def.h中进行定义。
描述符的相关操作API:
TDesC
Length()//== strlen()
Size()//==sizeof()
MaxLength()//申请的字符的最大长度
TPtr(C)::Set()和TDes::operator=()//用来将指针指向其他的字符串数据
TBuf::Des()和HBufC::Des()//返回一个指向缓存所容纳可变字符串指针。
数组
Symbian的数组分为静态数组和动态数组。
静态数组:和C/c++一样,多提供了很多额外的函数如 范围检查功能
动态数组:动态数组有如下两种实现方式:1.采用内存堆,每个分段都有一个独立的堆来保存/容纳数组元素;2.采用双向链表
建议使用RArray,这个唯一的不足是:它要求数组中的所有元素都需要以4字节对齐。
----------------------------------数组部分还有很多内容,在平时多揣摩
*小注意点:
Symbian的IDE Carbide C++可以制作出 exe和dll文件。如何区分他们呢。
UID1-通过UID1,UID1被构建工具设置成KdynamicLibraryUid(0x10000079)。而当为exe程序时,UID1则被设置成KExecutableImageUid(0x
1000007a)。
UID2—这个UID用来区分是共享库还是多态接口DLL. 对于共享库,UID2被设为KsharedLibraryUid(0x1000008d);但对于多态接口DLL它则根据不同的插件类型而取不同的值(比如,对于套接字服务器协议模块,UID2的值为0x1000004A).
更多精彩
赞助商链接