📄 descriptorexam.cpp
字号:
/*
============================================================================
Name : DescriptorExam.cpp
Author :
Copyright : Your copyright notice
Description : Exe source file
============================================================================
*/
// Include Files
#include "DescriptorExam.h"
#include <e32base.h>
#include <e32std.h>
#include <e32cons.h> // Console
#include <e32cmn.h>
// Constants
_LIT(KTextConsoleTitle, "Console");
_LIT(KTextFailed, " failed, leave code = %d");
_LIT(KTextPressAnyKey, " [press any key]\n");
// Global Variables
LOCAL_D CConsoleBase* console; // write all messages to this
void TestArray()
{
RPointerArray<HBufC> arrBuf;
RArray<TInt> arrID;
for(TInt i=0;i<10;i++)
{
arrID.Append(i);
HBufC* pBuf=HBufC::NewL(100);
pBuf->Des().AppendFormat(_L("Pointer Array Elements %d"),i);
arrBuf.Append(pBuf);
}
arrID.Remove(1); //删除数组中的第2个元素
HBufC* pTemp=arrBuf[2]; //取得数组的第3个元素
arrBuf.Remove(2); //删除数组中的第3个元素
delete pTemp; //释放内存
arrID.Reset(); //清空RArray数组
arrBuf.ResetAndDestroy(); //清空RPointerArray数组且释放内存
}
// Local Functions
LOCAL_C void MainL()
{
TestArray();
_LIT(KText1, "Hello World 1!\n");
TBufC<30> bufText1;
bufText1=KText1;
console->Write(bufText1);
_LIT(KText2, "Hello World 2!\n");
TBufC<30> bufText2(KText2);
console->Write(bufText2);
//以下是可修改描述符的常见操作
_LIT(KText, "Hello World!\n");
TBuf<100> buf;
buf.Copy(KText);
console->Write(buf);
TBufC<30> bufText(KText);
buf.Copy(bufText);
console->Write(buf);
buf.AppendFormat(_L("this is a TBuf example, %S"),&KText);
buf.AppendFormat(_L("+++ %S"),&bufText);
console->Write(buf);
//TPtrC
TPtrC ptrc1=buf.Left(8);
TPtrC ptrc2(ptrc1);
TPtrC ptrc3;
ptrc3.Set(buf);
ptrc2.Set(ptrc3);
console->Write(ptrc2);
//TPtr
TText text[100];
TPtr ptrText(text,100);
TPtr ptr=bufText2.Des();
ptr.Set(bufText1.Des());
ptr.AppendFormat(_L(" %d\n"),20);
console->Write(ptr);
//HBufC
HBufC* pBuf=HBufC::New(30);
TPtr ptrBuf=pBuf->Des();
delete pBuf;
//8 <--> 16
TBuf<20> bufName;
TBuf<60> bufAddr;
bufName.Append(_L("Jack"));
bufAddr.Append(_L("China Beijing"));
TBuf8<20> bufName8;
TBuf8<60> bufAddr8;
bufName8.Copy(bufName);
bufAddr8.Copy(bufAddr);
HBufC8* pSendMsg8=HBufC8::NewL(bufName8.Length()+1+bufAddr8.Length());
TPtr8 ptrSendMsg8=pSendMsg8->Des();
ptrSendMsg8.AppendFormat(_L8("%S;%S"),&bufName8,&bufAddr8);
HBufC* pMsg=HBufC::NewL(ptrSendMsg8.Length());
pMsg->Des().Copy(ptrSendMsg8);
console->Write(*pMsg);
delete pSendMsg8;
delete pMsg;
}
LOCAL_C void DoStartL()
{
// Create active scheduler (to run active objects)
CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
CleanupStack::PushL(scheduler);
CActiveScheduler::Install(scheduler);
MainL();
User::Leave(KErrNoMemory);
// Delete active scheduler
CleanupStack::PopAndDestroy(scheduler);
}
// Global Functions
GLDEF_C TInt E32Main()
{
// Create cleanup stack
__UHEAP_MARK;
CTrapCleanup* cleanup = CTrapCleanup::New();
// Create output console
TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(KConsFullScreen,KConsFullScreen)));
if (createError)
return createError;
// Run application code inside TRAP harness, wait keypress when terminated
TRAPD(mainError, DoStartL());
if (mainError)
console->Printf(KTextFailed, mainError);
console->Printf(KTextPressAnyKey);
console->Getch();
delete console;
delete cleanup;
__UHEAP_MARKEND;
return KErrNone;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -