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

📄 csvfile.cpp

📁 Visual_C++[1].NET_Bible1 Visual_C++宝典书中的全部源码
💻 CPP
字号:
#include "stdafx.h"
#include "CsvFile.h"

/******************************************************************************
******************************************************************************/
CCsvFile::CCsvFile(LPSTR lpszFileName)
{
    Initialize(lpszFileName);
}

/******************************************************************************
******************************************************************************/
CCsvFile::CCsvFile(CString& strFileName)
{
    Initialize(strFileName.GetBuffer(0));
}

/******************************************************************************
******************************************************************************/
void CCsvFile::Initialize(LPSTR lpszFileName)
{
	m_dwNumberOfRecords = 0;

	ASSERT(lpszFileName != NULL);
	ASSERT(AfxIsValidString(lpszFileName));

	if (CCsvFile::FileExists(lpszFileName))
	{
		if (Open(lpszFileName, CFile::modeRead))
		{
			m_dwNumberOfRecords = LoadRecords();
		}
	}	
}

/******************************************************************************
******************************************************************************/
CCsvFile::~CCsvFile()
{
	CCsvRecord* pCsvRecord;
	for (int i = m_CsvRecordArray.GetUpperBound(); i > -1; i--)
	{
		pCsvRecord = m_CsvRecordArray[i];
		m_CsvRecordArray.RemoveAt(i);

		ASSERT(pCsvRecord);
        if (pCsvRecord)
		{
			delete pCsvRecord;
		}
	}
	VERIFY(0 == m_CsvRecordArray.GetSize());
}

/******************************************************************************
******************************************************************************/
DWORD CCsvFile::LoadRecords()
{
	m_dwNumberOfRecords = 0;

	CCsvRecord* pCsvRecord;
	CString strRecord;
	while (ReadString(strRecord))
	{
		pCsvRecord = new CCsvRecord(strRecord.GetBuffer(0));
		
        ASSERT(pCsvRecord);
        if (pCsvRecord)
		{
			m_CsvRecordArray.Add(pCsvRecord);
		}
		strRecord.ReleaseBuffer();
	}

	return m_CsvRecordArray.GetSize();
}

/******************************************************************************
******************************************************************************/
UINT CCsvFile::GetStartPosition()
{
	UINT uiPosition;

	if (0 < m_CsvRecordArray.GetSize())
	{
		uiPosition = 0;
	}
	else
	{
		uiPosition = CCsvFile::EndOfFile;
	}

	return uiPosition;
}

/******************************************************************************
******************************************************************************/
void CCsvFile::GetNextAssoc(UINT& uiPosition, CCsvRecord** ppCsvRecord)
{
	UINT uiNewPosition = CCsvFile::EndOfFile;
	*ppCsvRecord = NULL;

	UINT nRecords = m_CsvRecordArray.GetSize();
	if (uiPosition >= 0 && uiPosition <= (nRecords - 1))
	{
		*ppCsvRecord = m_CsvRecordArray[uiPosition];
		if ( (uiPosition + 1) <= (nRecords - 1) )
		{
			uiNewPosition = uiPosition + 1;
		}
	}

	uiPosition = uiNewPosition;
}

⌨️ 快捷键说明

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