?? description.cpp
字號:
// Description.cpp
// All rights reserved.
//Author: LiuLiping
// version 1.0
// Date: 2006-2-12
// This program demostrate how to use TBuf,TBufC,TPtrandTPtrC.
#include <e32cons.h>
LOCAL_D CConsoleBase* console; // All messages written to this
void callExampleL(); // Function prototypes
void doExampleL();
void useTBuf();
void useTBufC();
void useTPtr();
void useTPtrC();
void WaitForKey()
{
_LIT(KMessage,"Press any key to continue\n\n");
console->Printf(KMessage);
console->Getch();
}
void useTBuf()
{
console->Printf(_L("\n*****useTBuf*****\n"));
_LIT(KMessage1,"There are cats");
_LIT(KMessage2," and dogs.");
_LIT(KMessage3,"white ");
_LIT(KMessage4,"black ");
_LIT(KMessage5,"HBufC alloc length is %d");
_LIT(KMessage6,"HBufC ReAlloc length is %d");
_LIT(KMessage7,"The fisrt address of buf is %x");
_LIT(KEnter,"\n");
TBuf<40> buf; //定義一個TBuf類對象buf
buf=KMessage1; //初始化buf
console->Printf(buf); //打印buf
console->Printf(KEnter);
buf.Append(KMessage2); //在buf末尾添加KMessage2
console->Printf(buf);
console->Printf(KEnter);
buf.Insert(10,KMessage3); //從buf第10位開始查如今KMessage3
buf.Insert(25,KMessage4); //從buf第25位開始查如今KMessage4
console->Printf(buf);
console->Printf(KEnter);
HBufC* hbufc = HBufC::New(40); //定義一個HBufC類的指針hbufc
hbufc = buf.Alloc(); //初始化hbufc
TPtr ptr1 = hbufc->Des(); //把不可改變的hbufc變為可改變的描述符賦給ptr通過ptr來對hbufc進行改變的操作
console->Printf(ptr1);
console->Printf(KEnter);
console->Printf(KMessage5,ptr1.MaxLength());//打印HBufC的初始最大長度
console->Printf(KEnter);
WaitForKey();
hbufc->ReAlloc(50);
TPtr ptr2 = hbufc->Des();
console->Printf(KMessage6,ptr2.MaxLength());//打印HBufC重新分配后的最大長度
console->Printf(KEnter);
WaitForKey();
console->Printf(KMessage7,buf.Ptr()); //打印buf的起始地址
console->Printf(KEnter);
WaitForKey();
}
void useTBufC()
{
console->Printf(_L("*****useTBufC*****\n"));
_LIT(KMessage1,"There are flowers");
_LIT(KMessage2," and trees.");
_LIT(KMessage3,"buautiful ");
_LIT(KMessage4,"HBufC alloc length is %d");
_LIT(KMessage5,"HBufC ReAlloc length is %d");
_LIT(KMessage6,"The fisrt address of bufc is %x");
_LIT(KEnter,"\n");
TBufC<40> bufc; //定義一個TBufC類的對象bufc
bufc=KMessage1; //初始化bufc
console->Printf(bufc); //打印bufc
console->Printf(KEnter);
TPtr ptr = bufc.Des(); //把不可改變的bufc變為可改變的描述符賦給ptr通過ptr來對bufc進行改變的操作
ptr.Append(KMessage2);
console->Printf(bufc);
console->Printf(KEnter);
ptr.Insert(10,KMessage3);
console->Printf(bufc);
console->Printf(KEnter);
HBufC* hbufc = HBufC::New(40);
hbufc = bufc.Alloc();
TPtr ptr1 = hbufc->Des();
console->Printf(ptr1);
console->Printf(KEnter);
console->Printf(KMessage4,ptr1.MaxLength());
console->Printf(KEnter);
WaitForKey();
hbufc->ReAlloc(50);
TPtr ptr2 = hbufc->Des();
console->Printf(KMessage5,ptr2.MaxLength());
console->Printf(KEnter);
WaitForKey();
console->Printf(KMessage6,bufc.Ptr());
console->Printf(KEnter);
WaitForKey();
}
void useTPtr()
{
console->Printf(_L("*****useTPtr*****\n"));
_LIT(KMessage1,"There are pandas");
_LIT(KMessage2," and deers.");
_LIT(KMessage3,"small lovely ");
_LIT(KMessage4,"HBufC alloc length is %d");
_LIT(KMessage5,"HBufC ReAlloc length is %d");
_LIT(KMessage6,"The fisrt address of ptr is %x");
_LIT(KEnter,"\n");
TBufC<40> bufc(KMessage1); //定義一個TBufC類的對象bufc并用KMessage1來初始化bufc
TPtr16 ptr(bufc.Des()); //定義一個TPtr16類的對象并用bufc來初始化它
console->Printf(ptr); //打印ptr
console->Printf(KEnter);
WaitForKey();
ptr.Append(KMessage2);
console->Printf(ptr);
console->Printf(KEnter);
ptr.Insert(10,KMessage3);
console->Printf(ptr);
console->Printf(KEnter);
HBufC* hbufc = HBufC::New(40);
hbufc = ptr.Alloc();
TPtr ptr1 = hbufc->Des();
console->Printf(ptr1);
console->Printf(KEnter);
console->Printf(KMessage4,ptr1.MaxLength());
console->Printf(KEnter);
WaitForKey();
hbufc->ReAlloc(50);
TPtr ptr2 = hbufc->Des();
console->Printf(KMessage5,ptr2.MaxLength());
console->Printf(KEnter);
WaitForKey();
console->Printf(KMessage6,ptr.Ptr());
console->Printf(KEnter);
WaitForKey();
}
void useTPtrC() //因為TPtrC類沒有函數Des()所以該類是不可改變的
{
console->Printf(_L("*****useTPtrC*****\n"));
_LIT(KMessage1,"There are books");
_LIT(KMessage2,"HBufC alloc length is %d");
_LIT(KMessage3,"HBufC ReAlloc length is %d");
_LIT(KMessage4,"The fisrt address of ptrc is %x");
_LIT(KEnter,"\n");
TPtrC ptrc(KMessage1); //定義一個TPtrC類的對象ptrc并用KMessage1初始化它
console->Printf(ptrc); //打印ptrc
console->Printf(KEnter);
HBufC* hbufc = HBufC::New(40);
hbufc = ptrc.Alloc();
TPtr ptr1 = hbufc->Des();
console->Printf(ptr1);
console->Printf(KEnter);
console->Printf(KMessage2,ptr1.MaxLength());
console->Printf(KEnter);
hbufc->ReAlloc(50);
TPtr ptr2 = hbufc->Des();
console->Printf(KMessage3,ptr2.MaxLength());
console->Printf(KEnter);
console->Printf(KMessage4,ptrc.Ptr());
console->Printf(KEnter);
}
GLDEF_C TInt E32Main()
{
CTrapCleanup* cleanup=CTrapCleanup::New(); // Get cleanup stack
TRAPD(error,doExampleL()); // callExampleL() should never leave.
_LIT(KMsgPanicEpoc32ex,"EPOC32EX");
__ASSERT_ALWAYS(!error,User::Panic(KMsgPanicEpoc32ex,error));
delete cleanup; // destroy the cleanup stack
return 0; // return
}
void doExampleL() //doExample() and CallExample()
{
_LIT(KPressAnyKey,"[Press any key...OK]");
//Get Console;
_LIT(KMsgExampleCode,"Symbian OS Example Code");
console = Console::NewL(KMsgExampleCode,TSize(KConsFullScreen,KConsFullScreen));
//Put console onto the cleanup stack.
CleanupStack::PushL(console);
int error;
TRAP(error,callExampleL()); //TRAPD(error,callExampleL());
if(error)
{
_LIT(KERROR,"error occured!\n");
console->Printf(KERROR);
}
console->Printf(KPressAnyKey);
console->Getch();
CleanupStack::PopAndDestroy();
}
void callExampleL()
{
useTBuf();
useTBufC();
useTPtr();
useTPtrC();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -