亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? filestore.cpp

?? 一個學習Symbian很好的例子
?? CPP
字號:
// FileStore.cpp
//
// Copyright (c) 2005 Neusoft Institute of Information Technology.Chengdu  
// All rights reserved.

// written by hewei
//  
// version 1.0

//Date: 2005-11-14

// This program demostrate how to use file store and stream dictionary. 

// NOTE: the structure of this example is different to standard E32 examples


#include <e32cons.h>
#include <f32file.h>
#include <e32std.h>
#include <s32file.h>
#include <s32stor.h>
#include <s32std.h>

  // All messages written to this
LOCAL_D CConsoleBase* console;
LOCAL_D const KStuDataStreamId=0x101F613F;
LOCAL_D const KTeachDataStreamId=0x101F6140;

// Function prototypes
 void callExampleL();
 void doExampleL();
 /////////////////////////////////////////////////////////////////
 //
 //CStudent class definition
 //
 /////////////////////////////////////////////////////////////////
 class CStudent :public CBase
 {
  public:
	  static CStudent* NewL(TDesC& aName,TInt32 aNo,TInt32 aScore);
	  static CStudent* NewLC(TDesC& aName,TInt32 aNo,TInt32 aScore);
	  ~CStudent();
 
	  static CStudent* NewL(RReadStream& aStream);   //帶有讀取流參數的NewL和NewLC
      static CStudent* NewLC(RReadStream& aStream);  //函數
  public:	  
	 void ExternalizeL(RWriteStream& aStream)const; //外化
	 void InternalizeL(RReadStream&  aStream); //內化
	 void Display(); //顯示
	 CStudent();
  private:
	  CStudent(TInt32 aNo,TInt32 aScore);
	  void ConstructL(TDesC& aName);	 
  private:
	  HBufC* iName;
	  TInt32 iNo; //是TInt32不是TInt
	  TInt32 iScore; //是TInt32不是TInt
 };
 /////////////////////////////////////////////////////////////////////
 //
 //Cstudent class implemention
 //
 //////////////////////////////////////////////////////////////////////
 CStudent* CStudent::NewL(TDesC& aName,TInt32 aNo,TInt32 aScore)
 {
     CStudent* self=CStudent::NewLC(aName,aNo,aScore);
	 CleanupStack::Pop(self);
	 return self;
 }
 CStudent* CStudent::NewLC(TDesC& aName,TInt32 aNo,TInt32 aScore)
 {
	 CStudent* self=new (ELeave) CStudent(aNo,aScore);
	 CleanupStack::PushL(self);
	 self->ConstructL(aName);
	 return self;
 }
 CStudent::CStudent(TInt32 aNo,TInt32 aScore)
 {
	 iNo=aNo;
	 iScore=aScore;
 }
 CStudent::CStudent()
 {
 }
 void CStudent::ConstructL(TDesC& aName)
 {
	 iName=aName.AllocL();
	 
 }
 CStudent::~CStudent()
 {
	 delete iName;
	 iName=NULL;
 }
 void CStudent::ExternalizeL(RWriteStream& aStream)const
 {
       aStream.WriteInt32L(iName->Des().MaxLength()); //寫入iName的最大長度
	   aStream<<*iName;//外化姓名
	   aStream.WriteInt32L(iNo); //寫入學號
	   aStream.WriteInt32L(iScore); //寫入成績
}
 void CStudent::InternalizeL(RReadStream& aStream)
 {
	if(iName!=NULL)
	{
		delete iName;
		iName=NULL;
	}
     
	TInt32 max;
	max=aStream.ReadInt32L(); //讀入最大長度
	iName=HBufC::NewL(aStream,max);//從流中建立iName對象
	iNo=aStream.ReadInt32L();//讀入學號
	iScore=aStream.ReadInt32L();//讀入成績
 }
 CStudent* CStudent::NewL(RReadStream& aStream)
 {
    
	CStudent* self=CStudent::NewLC(aStream);
	CleanupStack::Pop();
	 return self;
 }
 CStudent* CStudent::NewLC(RReadStream& aStream)
{
	CStudent* self=new (ELeave) CStudent;
	CleanupStack::PushL(self);
    self->InternalizeL(aStream);//內化
	return self;
}
void CStudent::Display()
{
	_LIT(KNo,"No=%d\n");
	_LIT(KScore,"score=%d\n");
	_LIT(KNewLine,"\n");
    
	console->Printf(*iName);
    console->Printf(KNewLine);
	console->Printf(KNo,iNo);
	console->Printf(KScore,iScore);
	console->Printf(KNewLine);
	console->Getch();
}
 /////////////////////////////////////////////////////////////////
 //
 //CTeacher class definition
 //
 /////////////////////////////////////////////////////////////////
 class CTeacher :public CBase
 {
  public:
	  static CTeacher* NewL(TDesC& aName,TInt32 aNo,TInt32 aAge);
	  static CTeacher* NewLC(TDesC& aName,TInt32 aNo,TInt32 aAge);
	  ~CTeacher();
 
	  static CTeacher* NewL(RReadStream& aStream);   //帶有讀取流參數的NewL和NewLC
      static CTeacher* NewLC(RReadStream& aStream);  //函數
  public:	  
	 void ExternalizeL(RWriteStream& aStream)const; //外化
	 void InternalizeL(RReadStream&  aStream); //內化
	 void Display(); //顯示
	 CTeacher();
  private:
	  CTeacher(TInt32 aNo,TInt32 aAge);
	  void ConstructL(TDesC& aName);	 
  private:
	  HBufC* iName;
	  TInt32 iNo; //是TInt32不是TInt
	  TInt32 iAge; //是TInt32不是TInt
 };
 /////////////////////////////////////////////////////////////////////
 //
 //CTeacher class implemention
 //
 //////////////////////////////////////////////////////////////////////
 CTeacher* CTeacher::NewL(TDesC& aName,TInt32 aNo,TInt32 aAge)
 {
     CTeacher* self=CTeacher::NewLC(aName,aNo,aAge);
	 CleanupStack::Pop(self);
	 return self;
 }
 CTeacher* CTeacher::NewLC(TDesC& aName,TInt32 aNo,TInt32 aAge)
 {
	 CTeacher* self=new (ELeave) CTeacher(aNo,aAge);
	 CleanupStack::PushL(self);
	 self->ConstructL(aName);
	 return self;
 }
 CTeacher::CTeacher(TInt32 aNo,TInt32 aAge)
 {
	 iNo=aNo;
	 iAge=aAge;
 }
 CTeacher::CTeacher()
 {
	 
 }
 
 void CTeacher::ConstructL(TDesC& aName)
 {
	 iName=aName.AllocL();
	 
 }
 CTeacher::~CTeacher()
 {
	 delete iName;
	 iName=NULL;
 }
 void CTeacher::ExternalizeL(RWriteStream& aStream)const
 {
       aStream.WriteInt32L(iName->Des().MaxLength()); //寫入iName的最大長度
	   aStream<<*iName;//外化姓名
	   aStream.WriteInt32L(iNo); //寫入學號
	   aStream.WriteInt32L(iAge); //寫入年齡
}
 void CTeacher::InternalizeL(RReadStream& aStream)
 {
	if(iName!=NULL)
	{
		delete iName;
		iName=NULL;
	}
     
	TInt32 max;
	max=aStream.ReadInt32L(); //讀入最大長度
	iName=HBufC::NewL(aStream,max);//從流中建立iName對象
	iNo=aStream.ReadInt32L();//讀入學號
	iAge=aStream.ReadInt32L();//讀入成績
 }
 CTeacher* CTeacher::NewL(RReadStream& aStream)
 {
    
	CTeacher* self=CTeacher::NewLC(aStream);
	CleanupStack::Pop();
	return self;
 }
 CTeacher* CTeacher::NewLC(RReadStream& aStream)
{
	CTeacher* self=new (ELeave) CTeacher;
	CleanupStack::PushL(self);
    self->InternalizeL(aStream);//內化
	return self;
}
void CTeacher::Display()
{
	_LIT(KNo,"No=%d\n");
	_LIT(KScore,"Age=%d\n");
	_LIT(KNewLine,"\n");
    
	console->Printf(*iName);
    console->Printf(KNewLine);
	console->Printf(KNo,iNo);
	console->Printf(KScore,iAge);
	console->Printf(KNewLine);
	console->Getch();
}
//////////////////////////////////////////////////////////////////////////////
//
// Main function called by E32
//
//////////////////////////////////////////////////////////////////////////////
GLDEF_C TInt E32Main()
    {
	  // Get cleanup stack
	CTrapCleanup* cleanup=CTrapCleanup::New();

	 // Some more initialization, then do the example
    TRAPD(error,doExampleL());
	// callExampleL() should never leave.
	_LIT(KMsgPanicEpoc32ex,"EPOC32EX");
	__ASSERT_ALWAYS(!error,User::Panic(KMsgPanicEpoc32ex,error));

  // destroy the cleanup stack
	delete cleanup;
	
	  // return
	return 0;
    }
//////////////////////////////////////////////////////////////////////////////
//
//DoExample()
//
//////////////////////////////////////////////////////////////////////////////
void doExampleL()
{
  	_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());
    if(error)
	{
		_LIT(KERROR,"error occured!\n");
		console->Printf(KERROR);
	}
	else{
      _LIT(KNOLEAVE,"No Leave!\n");
		console->Printf(KNOLEAVE);
	}
	console->Printf(KPressAnyKey);
	console->Getch();
		// Remove the console object from the cleanupstack
	  // and destroy it. 	
	CleanupStack::PopAndDestroy();
}
void TSStoreL(RFs aFs,TDesC& aFileName)
{
   _LIT(KNAME1,"hewei");
   _LIT(KNAME2,"yangzongde");
   _LIT(KNAME3,"zhangbing");
   _LIT(KNAME4,"liyong");

   TBuf<10> Name1(KNAME1);
   TBuf<10> Name2(KNAME2);
   TBuf<10> Name3(KNAME3);
   TBuf<10> Name4(KNAME4);
   
   CStudent* stu1=CStudent::NewL(Name1,1,60);
   CStudent* stu2=CStudent::NewL(Name2,2,70);
   CTeacher* teacher1=CTeacher::NewL(Name3,1,25);
   CTeacher* teacher2=CTeacher::NewL(Name4,2,30);

   CArrayFixFlat<CStudent> * array1=new (ELeave) CArrayFixFlat<CStudent>(4);
   CArrayFixFlat<CTeacher> * array2=new (ELeave) CArrayFixFlat<CTeacher>(4);
   //add three students to array using AppendL
   array1->AppendL(*stu1);
   array1->AppendL(*stu2);
   array2->AppendL(*teacher1);
   array2->AppendL(*teacher2);
   
   
   CFileStore* store=CDirectFileStore::ReplaceLC(aFs,aFileName,EFileWrite);//建立直接文件存儲
   store->SetTypeL(TUidType(store->Layout()));//設置存儲類型

   CStreamDictionary* dictionary=CStreamDictionary::NewLC();//建立流字典

   RStoreWriteStream StuStream;  //寫入流
   TStreamId Sid=StuStream.CreateLC(*store);//創建store下的寫入流
   TInt32 numberOfStudents=array1->Count();
   StuStream<<numberOfStudents;//寫入數組長度
   for(TInt i=0;i<numberOfStudents;i++)
   {
	   (*array1)[i].ExternalizeL(StuStream);//外化數組元素
   }
   StuStream.CommitL();//提交
   CleanupStack::PopAndDestroy();//流
   
   RStoreWriteStream TeacherStream;  //寫入流
   TStreamId Tid=TeacherStream.CreateLC(*store);//創建store下的寫入流
   TInt32 numberOfTeachers=array2->Count();
   TeacherStream<<numberOfTeachers;//寫入數組長度
   for(i=0;i<numberOfTeachers;i++)
   {
	   (*array2)[i].ExternalizeL(TeacherStream);//外化數組元素
   }
   TeacherStream.CommitL();//提交
   CleanupStack::PopAndDestroy();//流

   dictionary->AssignL(TUid::Uid(KStuDataStreamId),Sid);//在流字典中建立流與Uid的映射
   dictionary->AssignL(TUid::Uid(KTeachDataStreamId),Tid);//在流字典中建立流與Uid的映射


   RStoreWriteStream root;//根流
   TStreamId rootid=root.CreateLC(*store);
   root<<*dictionary;//外化流字典
   root.CommitL();//提交
   CleanupStack::PopAndDestroy();//root
   CleanupStack::PopAndDestroy();//dictionary;
   store->SetRootL(rootid);//設置根流
   store->CommitL();//提交
   CleanupStack::PopAndDestroy();//store
  
}
void TSRestoreL(RFs aFs,TDesC& aFileName)
{
	
	CArrayFixFlat<CStudent> * array1=new (ELeave) CArrayFixFlat<CStudent>(10);//建立動態數組
	CleanupStack::PushL(array1);
	CArrayFixFlat<CTeacher> * array2=new (ELeave) CArrayFixFlat<CTeacher>(10);//建立動態數組
	CleanupStack::PushL(array2);

	CFileStore *store=CDirectFileStore::OpenLC(aFs,aFileName,EFileRead);//打開文件存儲

	CStreamDictionary* dictionary=CStreamDictionary::NewLC();//創建流字典

	RStoreReadStream rootStream;
	rootStream.OpenLC(*store,store->Root());//打開根流
	rootStream>>*dictionary;//讀出流字典
	CleanupStack::PopAndDestroy();//root;

    TStreamId Sid=dictionary->At(TUid::Uid(KStuDataStreamId));//獲得學生流ID
    TStreamId Tid=dictionary->At(TUid::Uid(KTeachDataStreamId));//獲得教師流ID
    CleanupStack::PopAndDestroy();//dic
	//讀出學生數據
	RStoreReadStream readStuStream;
	readStuStream.OpenLC(*store,Sid); //輸入流
	TInt32 numberOfStudents;
	readStuStream>>numberOfStudents;//讀入數組長度
	for(TInt i=0;i<numberOfStudents;i++)
	{
		CStudent* stu=CStudent::NewL (readStuStream);//讀出一個數據
		CleanupStack::PushL(stu);
		array1->AppendL(*stu); //添加到數組中
		CleanupStack::Pop(stu);
	}
	CleanupStack::PopAndDestroy();//readStuStream
	//打印學生信息
	_LIT(KPrompt1,"List students:\n");
	console->Printf(KPrompt1);
	for(i=0;i<array1->Count();i++)
	{
		(*array1)[i].Display();
	}
	//讀出教師數據
    RStoreReadStream readTeacherStream;
	readTeacherStream.OpenLC(*store,Tid); //輸入流
	TInt32 numberOfTeachers;
	readTeacherStream>>numberOfTeachers;//讀入數組長度
	for(i=0;i<numberOfTeachers;i++)
	{
		CTeacher* teacher=CTeacher::NewL (readTeacherStream);//讀出一個數據
		CleanupStack::PushL(teacher);
		array2->AppendL(*teacher); //添加到數組中
		CleanupStack::Pop(teacher);
	}
	CleanupStack::PopAndDestroy();//readTeacherStream
	//打印教師信息
	_LIT(KPrompt2,"List teachers:\n");
	console->Printf(KPrompt2);
	for(i=0;i<array2->Count();i++)
	{
		(*array2)[i].Display();
	}
	
	CleanupStack::PopAndDestroy(store);//store
	CleanupStack::PopAndDestroy(2);//array
}

void callExampleL() 
    {
   RFs iFs;//文件會話
   User::LeaveIfError(iFs.Connect());//connect to file server
   _LIT(KFileName,"c:\\stuList1.txt");
   TBuf<20> FileName(KFileName);

   TSStoreL(iFs,FileName); //存儲數據
   TSRestoreL(iFs,FileName);//讀出數據
   
   //Close file server
   iFs.Close();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品电影| 亚洲成人免费视| 在线观看视频欧美| 麻豆精品在线视频| 亚洲免费三区一区二区| 日韩欧美一级片| 成人污视频在线观看| 日韩1区2区日韩1区2区| 国产精品午夜久久| 欧美大白屁股肥臀xxxxxx| 成人黄色av电影| 美腿丝袜亚洲三区| 一个色综合网站| 一区二区中文视频| 国产精品久久久久天堂| 久久久久久久久久久电影| 欧美一区二区日韩一区二区| 99久久精品情趣| 丁香啪啪综合成人亚洲小说| 国产成人丝袜美腿| 久草精品在线观看| 免费成人美女在线观看.| 国产精品久久久久久久久免费樱桃 | 久久久久久久性| 精品国产免费视频| 日韩欧美综合在线| 日韩欧美美女一区二区三区| 日韩一区二区在线观看视频| 日韩一区二区三区免费观看| 欧美蜜桃一区二区三区| 日韩一区二区在线观看视频| 欧美一区二区精品在线| 欧美成人猛片aaaaaaa| 久久久综合视频| 久久这里只有精品6| 国产免费久久精品| 亚洲欧美另类综合偷拍| 亚洲成av人片一区二区梦乃| 青青草精品视频| 国产露脸91国语对白| 欧美日韩高清一区二区三区| 91网页版在线| 日韩限制级电影在线观看| 国产精品传媒视频| 午夜婷婷国产麻豆精品| 国产在线不卡一区| 欧美图区在线视频| 久久久久久久久蜜桃| 天天做天天摸天天爽国产一区| 激情综合网最新| 欧美亚洲动漫制服丝袜| 国产精品久久一卡二卡| 五月天丁香久久| av电影天堂一区二区在线| 中文字幕在线一区免费| 国产成都精品91一区二区三| 欧美日韩欧美一区二区| 亚洲欧美欧美一区二区三区| 国产在线精品一区二区夜色| 精品欧美一区二区在线观看| 成a人片亚洲日本久久| 亚洲一区成人在线| 日韩高清一级片| 91精品国产全国免费观看| 强制捆绑调教一区二区| 国产精品看片你懂得| 欧美成人三级在线| 国产麻豆精品theporn| 欧美三级资源在线| 亚洲免费观看高清完整版在线观看熊| 日韩激情中文字幕| 欧美一区二区三区免费在线看 | 欧美成人精品二区三区99精品| 亚洲一区在线播放| 欧美系列日韩一区| 亚洲午夜精品在线| 欧美军同video69gay| 亚洲国产精品久久久久秋霞影院 | 99riav一区二区三区| 尤物视频一区二区| 欧美精品在线观看播放| 国产一区在线不卡| 五月天丁香久久| 136国产福利精品导航| 91精品国产综合久久蜜臀| 国产精品一区免费视频| 日韩—二三区免费观看av| 日本一区二区久久| 精品国产成人在线影院| 日本福利一区二区| 成人a级免费电影| 久久不见久久见免费视频1| 亚洲免费观看高清完整版在线观看熊| 欧美一级久久久久久久大片| 91在线播放网址| 成人高清在线视频| 国产精品夜夜嗨| 国产精品一区二区久激情瑜伽 | 麻豆精品在线视频| 一区二区欧美在线观看| 亚洲人成网站精品片在线观看| 久久久久久电影| 亚洲国产精华液网站w| heyzo一本久久综合| 国产日韩影视精品| 国产免费久久精品| 久久精品国产一区二区三区免费看 | 色88888久久久久久影院按摩| av不卡在线观看| 欧美揉bbbbb揉bbbbb| 欧美一区二区三区四区在线观看| 在线不卡欧美精品一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 色综合色综合色综合| 7777精品伊人久久久大香线蕉超级流畅 | a级高清视频欧美日韩| 欧美三级电影在线观看| 精品精品国产高清一毛片一天堂| 国产三级精品三级| 亚洲成人激情自拍| 福利视频网站一区二区三区| 欧洲精品在线观看| 国产亚洲短视频| 午夜电影网一区| 丁香六月综合激情| 欧美日韩一区二区电影| 久久综合国产精品| 性久久久久久久久| 国产乱码精品一品二品| 91福利资源站| 日本一区二区三区四区| 日本一不卡视频| 在线播放一区二区三区| 亚洲人成网站影音先锋播放| 成人激情免费视频| 国产亚洲视频系列| 国产麻豆91精品| 亚洲精品一区二区三区99| 激情欧美日韩一区二区| 日韩免费电影一区| 国产在线视频一区二区| 精品国产电影一区二区| 精品一区二区三区香蕉蜜桃| 91麻豆精品国产无毒不卡在线观看| 一区二区三区在线播| 色94色欧美sute亚洲线路一久| 亚洲婷婷在线视频| 成人av电影在线观看| ㊣最新国产の精品bt伙计久久| 99精品久久99久久久久| 夜夜操天天操亚洲| 欧美一区二区播放| 久久 天天综合| 国产精品免费aⅴ片在线观看| 国产精品夜夜嗨| 一区二区三区日韩欧美| 日韩一区二区在线观看视频| 国产自产高清不卡| 亚洲v日本v欧美v久久精品| 制服.丝袜.亚洲.另类.中文| 久久不见久久见免费视频7| 亚洲视频狠狠干| 久久亚洲二区三区| 91麻豆精品国产91久久久久 | 中文字幕一区二区三区不卡| 欧美日韩精品一区二区三区蜜桃| 亚洲福利一区二区| 精品成人私密视频| 一本大道av一区二区在线播放| 丝袜美腿一区二区三区| 国产农村妇女精品| 欧美日韩精品一区二区三区四区| 久久99久国产精品黄毛片色诱| 国产精品麻豆一区二区| 91精品婷婷国产综合久久 | 日本麻豆一区二区三区视频| 久久久久久久网| 91精品国产色综合久久久蜜香臀| 国产激情视频一区二区在线观看| 亚洲丝袜精品丝袜在线| 国产免费观看久久| 欧美videossexotv100| 欧美性一级生活| 91国偷自产一区二区三区成为亚洲经典 | 午夜精品福利视频网站| 亚洲黄色录像片| 伊人夜夜躁av伊人久久| 国产偷v国产偷v亚洲高清| 欧美不卡视频一区| 久久久久久久久免费| 久久久国产精品麻豆| 欧美精品一区二区三区在线播放| 欧美高清你懂得| 日韩亚洲欧美成人一区| 欧美成人精精品一区二区频| 精品久久久久久久人人人人传媒| 日韩一区二区影院| 久久亚洲精品小早川怜子| 国产欧美日韩精品在线| 国产精品毛片a∨一区二区三区|