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

📄 csvfileloader.h

📁 最新官方例子,图形,描述副,基本控件,通讯协议,等等,
💻 H
字号:
#ifndef CSVFILELOADER_H
#define CSVFILELOADER_H

// INCLUDES

// System includes
#include <e32base.h>
#include <f32file.h>

// User includes
#include "elementsmain.h"

// CONSTANTS
const TInt KMaxElementStringSize = 100;

// FORWARD DECLARATIONS
class MCsvFileLoaderObserver;
class CElementList;

// CLASS DECLARATION

/**
*
* @class	CCsvFileLoader csvfileloader.h
* @brief	Class to load in a csv (comma separated value) file containing an arbitrary number of
*			elements, one to a line, each specified thus:
*			name,symbol,atomic_number,relative_atomic_mass,type,radioactive
*			where:
*			name: the name of the element;
*			symbol: the symbol of the element (maximum of KMaxSymbolLength characters);
*			atomic_number: the atomic number (integer);
*			relative_atomic_mass: the relative atomic mass (real);
*			type: either m (for metal), s (for semi-metal), n (for non-metal)
*			radioactive: either r (for radioactive) or n (for non-radioactive)
*			e.g. a file might start:
*			Hydrogen,H,1,1.00794,n,n
*			Helium,He,2,4.0026,n,n
*			Lithium,Li,3,6.941,m,n
*			...
*			Note that functionality has been added to deliberately slow down the operation of the
*			class to demonstrate it's asynchronous nature more clearly...
*
* Copyright (c) EMCC Software Ltd 2003
* @version 1.0
*/
class CCsvFileLoader : public CActive
	{
public:
	/**
	* Destructor
	*/
	virtual ~CCsvFileLoader();

	/**
	* Canonical NewL function. Constructs a new CCsvFileLoader in a leave-safe manner.
	* @param aFs Reference to a handle on the filesystem.
	* @param aElementList The element list to load the elements into. It is not assumed to be empty.
	* @param aObserver The observer to notify as each element is loaded, and finally to notify of the 
	* final completion state.
	* @param aFileName The fully qualified filename of the csv file containing the elements to load.
	* @return The newly constructed CCsvFileLoader.
	*/
	static CCsvFileLoader* NewL(RFs& aFs, CElementList& aElementList, MCsvFileLoaderObserver& aObserver,
		const TDesC& aFileName);

	/**
	* Canonical NewLC function. Constructs a new CCsvFileLoader in a leave-safe manner, and leaves a pointer
	* to it on the cleanup stack
	* @param aFs Reference to a handle on the filesystem.
	* @param aElementList The element list to load the elements into. It is not assumed to be empty.
	* @param aObserver The observer to notify as each element is loaded, and finally to notify of the 
	* final completion state.
	* @param aFileName The fully qualified filename of the csv file containing the elements to load.
	* @return The newly constructed CCsvFileLoader.
	*/
	static CCsvFileLoader* NewLC(RFs& aFs, CElementList& aElementList, MCsvFileLoaderObserver& aObserver,
		const TDesC& aFileName);

	/**
	* Starts the asynchronous loading of the element data. This function will return immediately.
	* As data is loaded, the observer's NotifyElementLoaded function will be called each time an element
	* is loaded with the index of the newly loaded element. Once loading has completed (either successfully
	* or otherwise, the observer's NotifyLoadCompleted callback function will be called with the completion
	* status and a reference to this loader for identification purposes (in the case of multiple or 
	* simultaneous file loads, for instance).
	*/
	void Start();
	
private:
	CCsvFileLoader(RFs& aFs, CElementList& aElementList, MCsvFileLoaderObserver& aObserver);
	void ConstructL(const TDesC& aFileName);
	TPtrC8 ExtractToNewLineL(const TDesC8& aBuffer) const;
	void FillReadBufferL();
	//From CActive
	void RunL();
	TInt RunError(TInt aError);
	void DoCancel();

private:
	TFileName iFileName;
	RFs& iFs;
	RFile iFile;
	CElementList& iElementList;
	MCsvFileLoaderObserver& iObserver;
	TBuf8<KMaxElementStringSize> iReadBuffer;
	TInt iFilePos;
	TBool iWastingTime;
	TBool iHaveTriedToLoad;
	RTimer iTimeWaster;
	};

#endif // #ifndef CSVFILELOADER_H

// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -