⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 descriptorexam.cpp

📁 国内著名嵌入式培训机构内部资料,内含一些实例代码,包括技术专题书籍
💻 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 + -