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

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

?? textfile.cpp

?? 一個c++實現的acd的例子。 ----ACDCommandListener.cpp ---ACDCommandListenerThread.cpp ---ACDConfig.cpp ---a
?? CPP
字號:
// TextFile.cpp: implementation of the TextFile class.
//
//////////////////////////////////////////////////////////////////////

#include "StdAfx.h"
#include "TextFile.h"

#include <tchar.h>
#include <commdlg.h>

#include <sstream>
using namespace std;

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////
// operator <<
//
// Purpose:		stream operators for file

void operator << ( stringstream & strm, TextFile & file )
{
	// get buffer
	long	sz     = file.size();
	TCHAR * buffer = new TCHAR[sz+1];
	if ( !buffer )
		return;

	// if read in, put buffer into stream
	if ( file.read(buffer,sz) )
	{
		buffer[sz] = '\0';
		strm << buffer;
	}

	// release buffer
	delete buffer;
}

void operator << ( TextFile & file, stringstream & strm )
{
	// get buffer
	string & str  = strm.str();
	char * buffer = (char *) str.c_str();
	if ( !buffer )
		return;


	// write buffer to file
	long sz = str.size();
	file.write(buffer,sz);
}


/////////////////////////////////////////////////////////////
// TextFile



//##ModelId=424BB6410018
TextFile::TextFile () :
	Lock(),
	_hFile(0),						// handle to file
	_openFlags(0),					// flags used to open file
	_name("")						// name of file
{}

//##ModelId=424BB6410019
TextFile::~TextFile () 
{
	release();
}

//##ModelId=424BB6410067
bool TextFile::create ()
{
	// if already open then close it
	if ( isOpen() )
		close();

	// init
	_hFile = 0;
	_openFlags = 0;
	_name = "";

	return true;
}

//##ModelId=424BB6410075
void TextFile::release ()
{
	// release lock
	Lock::release();

	// close file
	close();

	// release string
	_name.erase();
}


//##ModelId=424BB6410028
void TextFile::showLastError ()
{
	LPVOID lpMsgBuf;
	DWORD  error = GetLastError();
	FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | 
				   FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,    
				   NULL,
				   error,
				   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
				   (LPTSTR) &lpMsgBuf,    0,    NULL );		  // Process any inserts in lpMsgBuf.

	// Display the string.
	AtlTrace("%s\n",(const char *) lpMsgBuf);

	// Free the buffer.
	LocalFree( lpMsgBuf );
}



//##ModelId=424BB6410029
bool TextFile::invalidFile ()
{
	if ( _hFile == INVALID_HANDLE_VALUE )
		return true;
	else
		return false;
}

//##ModelId=424BB6410036
bool TextFile::create ( string & fileName )
{
	DWORD openFlags = CREATE_ALWAYS;
	return open(fileName,openFlags);
}

//##ModelId=424BB6410038
bool TextFile::open ( string & fileName )
{
	DWORD openFlags = OPEN_EXISTING;
	return open(fileName,openFlags);
}

//##ModelId=424BB6410047
bool TextFile::openFastRead ( string & fileName )
{
	if ( !lock() )
		return false;

	// open the file
	_hFile = 
	CreateFile( fileName.c_str(),
			    GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
			    FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
				NULL ); 

	unlock();

	if ( _hFile == INVALID_HANDLE_VALUE )
	{
		showLastError();
		return false;
	}

	// store file info
	_openFlags = OPEN_EXISTING;
	_name = fileName;

	return true;
}

//##ModelId=424BB6410055
bool TextFile::openAlways ( string & fileName )
{
	DWORD openFlags = OPEN_ALWAYS;
	return open(fileName,openFlags);
}

//##ModelId=424BB6410057
bool TextFile::open ( string & fileName, DWORD openFlags )
{
	if ( !lock() )
		return false;

	// open the file
	_hFile = 
	CreateFile( fileName.c_str(),
				GENERIC_READ | GENERIC_WRITE,
				FILE_SHARE_READ | FILE_SHARE_WRITE,
				NULL,
				openFlags,
				FILE_ATTRIBUTE_NORMAL, 0 );

	unlock();

	if ( _hFile == INVALID_HANDLE_VALUE )
	{
		showLastError();
		return false;
	}

	// store file info
	_openFlags = openFlags;
	_name = fileName;

	return true;
}

//##ModelId=424BB6410066
void TextFile::close ()
{
	if ( !lock() )
		return;

	if ( _hFile == INVALID_HANDLE_VALUE )
		return;

	::CloseHandle(_hFile);
	_hFile = INVALID_HANDLE_VALUE;

	unlock();
}

//##ModelId=424BB6410076
bool TextFile::setPosition ( DWORD position )
{
	if ( !lock() )
		return false;

	if ( _hFile == INVALID_HANDLE_VALUE )
		return false;

	LONG moveHigh = 0;

	DWORD dwPos = 
	::SetFilePointer( _hFile, position, &moveHigh, FILE_BEGIN );

	if ( moveHigh == 0xffffffff )
		return false;

	unlock();
	return true;
}

//##ModelId=424BB6410084
long TextFile::size ()
{
	if ( !lock() )
		return 0;

	if ( _hFile == INVALID_HANDLE_VALUE )
		return 0;

	DWORD dwSize =
	::GetFileSize(_hFile, NULL);

	unlock();
	return dwSize;
}

//##ModelId=424BB6410094
void TextFile::clear ()
{
	if ( !lock() )
		return;

	if ( _hFile == INVALID_HANDLE_VALUE )
		return;

	::CloseHandle(_hFile);
	DeleteFile( _name.c_str() );

	bool success = 
	open(_name,_openFlags);

	unlock();
}



//##ModelId=424BB6410085
bool TextFile::offsetPosition ( DWORD offset )
{
	if ( !lock() )
		return false;

	if ( _hFile == INVALID_HANDLE_VALUE )
		return false;

	LONG moveHigh = 0;

	DWORD dwPos = 
	::SetFilePointer( _hFile, offset, &moveHigh, FILE_CURRENT );

	if ( moveHigh == 0xffffffff )
		return false;

	unlock();
	return true;
}

//##ModelId=424BB6410095
bool TextFile::write ( LPTSTR pBuffer, DWORD noToWrite )
{
	if ( !lock() )
	return false;


	bool success = false;
	try
	{
		DWORD noWritten = 0;
		if ( WriteFile(_hFile,(LPVOID)pBuffer,noToWrite,&noWritten,NULL) != 0 )
			success = true;
	}
	catch(...)
	{}

	unlock();

	return success;
}

//##ModelId=424BB64100A4
bool TextFile::read ( LPTSTR pBuffer, DWORD noToRead )
{
	if ( !lock() )
		return false;

	bool success = false;
	try
	{
		DWORD noRead;
		if ( ReadFile(_hFile,(LPVOID)pBuffer,noToRead,&noRead,NULL) != 0 )
			success = true;
	}
	catch(...)
	{}

	unlock();

	return success;
}



//##ModelId=424BB64100B4
bool TextFile::getStatus(LPCTSTR lpszFileName, TextFileStatus& rStatus)
{
	// attempt to fully qualify path first
	if (!getFullPath(rStatus._szFullName, lpszFileName))
	{
		rStatus._szFullName[0] = '\0';
		return false;
	}

	WIN32_FIND_DATA findFileData;
	HANDLE hFind = FindFirstFile((LPTSTR)lpszFileName, &findFileData);
	if (hFind == INVALID_HANDLE_VALUE)
		return false;
	FindClose(hFind);

	// strip attribute of NORMAL bit, our API doesn't have a "normal" bit.
	rStatus._attribute = (BYTE)
		(findFileData.dwFileAttributes & ~FILE_ATTRIBUTE_NORMAL);

	// get just the low DWORD of the file size
	_ASSERT(findFileData.nFileSizeHigh == 0);
	rStatus._size = (LONG)findFileData.nFileSizeLow;

	// convert times as appropriate
	rStatus._ctime = TimeStamp(findFileData.ftCreationTime);
	rStatus._atime = TimeStamp(findFileData.ftLastAccessTime);
	rStatus._mtime = TimeStamp(findFileData.ftLastWriteTime);

	if (rStatus._ctime.empty() == 0)
		rStatus._ctime = rStatus._mtime;

	if (rStatus._atime.empty() == 0)
		rStatus._atime = rStatus._mtime;

	return TRUE;
}

bool TimeToFileTime(TimeStamp& time, LPFILETIME pFileTime)
{
	SYSTEMTIME sysTime;
	time.getTime(sysTime);

	// convert system time to local file time
	FILETIME localTime;
	if (!SystemTimeToFileTime((LPSYSTEMTIME)&sysTime, &localTime))
		return false;

	// convert local file time to UTC file time
	if (!LocalFileTimeToFileTime(&localTime, pFileTime))
		return false;

	return true;
}

//##ModelId=424BB64100C4
bool TextFile::setStatus ( LPCTSTR lpszFileName, TextFileStatus & status )
{
	DWORD wAttr;
	FILETIME creationTime;
	FILETIME lastAccessTime;
	FILETIME lastWriteTime;
	LPFILETIME lpCreationTime = NULL;
	LPFILETIME lpLastAccessTime = NULL;
	LPFILETIME lpLastWriteTime = NULL;

	if ((wAttr = GetFileAttributes((LPTSTR)lpszFileName)) == (DWORD)-1L)
		return false;

	if ((DWORD)status._attribute != wAttr && (wAttr & FILE_ATTRIBUTE_READONLY))
	{
		// Set file attribute, only if currently readonly.
		// This way we will be able to modify the time assuming the
		// caller changed the file from readonly.

		if (!SetFileAttributes((LPTSTR)lpszFileName, (DWORD)status._attribute))
			return false;
	}

	// last modification time
	if (status._mtime.empty() != 0)
	{
		TimeToFileTime(status._mtime, &lastWriteTime);
		lpLastWriteTime = &lastWriteTime;

		// last access time
		if (status._atime.empty() != 0)
		{
			TimeToFileTime(status._atime, &lastAccessTime);
			lpLastAccessTime = &lastAccessTime;
		}

		// create time
		if (status._ctime.empty() != 0)
		{
			TimeToFileTime(status._ctime, &creationTime);
			lpCreationTime = &creationTime;
		}

		HANDLE hFile = ::CreateFile(lpszFileName, GENERIC_READ|GENERIC_WRITE,
			FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
			NULL);

		if (hFile == INVALID_HANDLE_VALUE)
			return false;

		if (!SetFileTime((HANDLE)hFile, lpCreationTime, lpLastAccessTime, lpLastWriteTime))
			return false;

		if (!::CloseHandle(hFile))
			return false;
	}

	if ((DWORD)status._attribute != wAttr && !(wAttr & FILE_ATTRIBUTE_READONLY))
	{
		if (!SetFileAttributes((LPTSTR)lpszFileName, (DWORD)status._attribute))
			return false;
	}

	return true;
}



// turn a file, relative path or other into an absolute path
// lpszPathOut = buffer of _MAX_PATH
// lpszFileIn = file, relative path or absolute path
// (both in ANSI character set)

//##ModelId=424BB64100E4
bool TextFile::getFullPath ( LPTSTR lpszPathOut, LPCTSTR lpszFileIn )
{
	// first, fully qualify the path name
	LPTSTR lpszFilePart;
	if (!GetFullPathName(lpszFileIn, _MAX_PATH, lpszPathOut, &lpszFilePart))
	{
		
		if (lpszFileIn[0] != '\0')
			return false;
		lstrcpyn(lpszPathOut, lpszFileIn, _MAX_PATH); // take it literally
		return false;
	}
	
	// determine the root name of the volume
	string strRoot;
	getRoot(lpszPathOut, strRoot);
	
	// get file system information for the volume
	DWORD dwFlags, dwDummy;
	if ( !GetVolumeInformation(strRoot.c_str(), NULL, 0, NULL, &dwDummy, &dwFlags,
		                       NULL, 0))
	{
		return false;
	}
	
	// not all characters have complete uppercase/lowercase
	if (!(dwFlags & FS_CASE_IS_PRESERVED))
		CharUpper(lpszPathOut);
	
	// assume non-UNICODE file systems, use OEM character set
	if (!(dwFlags & FS_UNICODE_STORED_ON_DISK))
	{
		WIN32_FIND_DATA data;
		HANDLE h = FindFirstFile(lpszFileIn, &data);
		if (h != INVALID_HANDLE_VALUE)
		{
			FindClose(h);
			lstrcpy(lpszFilePart, data.cFileName);
		}
	}
	return TRUE;
}

//##ModelId=424BB64100F3
bool TextFile::getRoot ( LPCTSTR lpszPath, string & strRoot )
{
	if ( lpszPath == NULL )
		return false;

	// determine the root name of the volume
	LPTSTR lpszRoot = (LPTSTR) strRoot.c_str();
	memset(lpszRoot, 0, _MAX_PATH);
	lstrcpyn(lpszRoot, lpszPath, _MAX_PATH);
	for (LPTSTR lpsz = lpszRoot; *lpsz != '\0'; lpsz = _tcsinc(lpsz))
	{
		// find first double slash and stop
		if ( isDirSep(lpsz[0]) && isDirSep(lpsz[1]) )
			break;
	}

	if ( *lpsz != '\0' )
	{
		// it is a UNC name, find second slash past '\\'
		_ASSERT(isDirSep(lpsz[0]));
		_ASSERT(isDirSep(lpsz[1]));

		lpsz += 2;
		while (*lpsz != '\0' && (!isDirSep(*lpsz)))
			lpsz = _tcsinc(lpsz);
		if (*lpsz != '\0')
			lpsz = _tcsinc(lpsz);
		while (*lpsz != '\0' && (!isDirSep(*lpsz)))
			lpsz = _tcsinc(lpsz);
		// terminate it just after the UNC root (ie. '\\server\share\')
		if (*lpsz != '\0')
			lpsz[1] = '\0';
	}
	else
	{
		// not a UNC, look for just the first slash
		lpsz = lpszRoot;
		while (*lpsz != '\0' && (!isDirSep(*lpsz)))
			lpsz = _tcsinc(lpsz);
		// terminate it just after root (ie. 'x:\')
		if (*lpsz != '\0')
			lpsz[1] = '\0';
	}

	

	return true;
}

//##ModelId=424BB6410101
bool TextFile::comparePath(LPCTSTR lpszPath1, LPCTSTR lpszPath2)
{
	// use case insensitive compare as a starter
	if (lstrcmpi(lpszPath1, lpszPath2) != 0)
		return false;
	else
		return true;
}

//##ModelId=424BB6410105
long TextFile::getFileTitle(LPCTSTR lpszPathName, LPTSTR lpszTitle, UINT nMax)
{
	if ( lpszTitle == NULL )
		return 0;
	if ( lpszPathName == NULL )
		return NULL;
	
	// use a temporary to avoid bugs in ::GetFileTitle when lpszTitle is NULL
	TCHAR szTemp[_MAX_PATH];
	LPTSTR lpszTemp = lpszTitle;
	if ( lpszTemp == NULL )
	{
		lpszTemp = szTemp;
		nMax = lstrlen(szTemp);
	}

	if ( ::GetFileTitle(lpszPathName, lpszTemp, (WORD)nMax) != 0 )
		return 0;


	return lpszTitle == NULL ? lstrlen(lpszTemp)+1 : 0;
}



//##ModelId=424BB64100D2
bool TextFile::rename ( LPCTSTR lpszOldName, LPCTSTR lpszNewName )
{
	if ( !::MoveFile((LPTSTR)lpszOldName, (LPTSTR)lpszNewName) )
		return false;
	else
		return true;
}

//##ModelId=424BB64100D6
bool TextFile::remove ( LPCTSTR lpszFileName )
{
	if ( !::DeleteFile((LPTSTR)lpszFileName) )
		return false;
	else
		return true;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品系列在线播放| 欧美一区二区三区免费在线看| 日本久久一区二区三区| 51久久夜色精品国产麻豆| 国产人成一区二区三区影院| 亚洲国产成人高清精品| 国产成人av一区二区三区在线观看| 色天天综合久久久久综合片| 国产视频视频一区| 首页综合国产亚洲丝袜| 国产69精品久久久久777| 91麻豆国产福利在线观看| 欧美精品一区二区三区蜜桃视频 | 日产欧产美韩系列久久99| 风间由美一区二区三区在线观看 | 亚洲欧洲中文日韩久久av乱码| 美女爽到高潮91| 欧美无乱码久久久免费午夜一区| 国产日产亚洲精品系列| 久久精品国产**网站演员| 欧美日韩综合色| 一级女性全黄久久生活片免费| 国产精品小仙女| 久久免费美女视频| 美国av一区二区| 在线综合+亚洲+欧美中文字幕| 亚洲精品自拍动漫在线| 波多野结衣中文字幕一区二区三区 | 欧美videofree性高清杂交| 一区二区三区在线影院| 99精品视频一区二区三区| 国产欧美日韩在线看| 国产真实精品久久二三区| 日韩精品中文字幕在线不卡尤物 | 亚洲人成7777| 91色婷婷久久久久合中文| 国产亚洲综合av| 国产91高潮流白浆在线麻豆 | 国产亚洲综合性久久久影院| 国产综合久久久久久久久久久久 | 久久电影网电视剧免费观看| 欧美一区二区播放| 免费成人美女在线观看| 日韩一区二区在线播放| 久久99蜜桃精品| 国产亚洲一区二区三区四区| 成人精品国产福利| 国产精品无码永久免费888| 国产成人亚洲精品狼色在线| 中文字幕一区免费在线观看| 91麻豆国产精品久久| 天天影视涩香欲综合网| 欧美电影免费观看高清完整版在线| 日韩av高清在线观看| 精品理论电影在线观看 | 亚洲一区二区四区蜜桃| 欧美日韩激情一区二区三区| 麻豆成人久久精品二区三区小说| 欧美成人a视频| a美女胸又www黄视频久久| 一区二区久久久久久| 91精品国产色综合久久久蜜香臀| 国产在线精品一区二区| 成人免费在线视频观看| 欧美日韩国产综合一区二区三区 | 欧美日韩高清在线| 精品一区二区国语对白| 亚洲视频你懂的| 日韩一二三区视频| 成人激情校园春色| 日韩成人dvd| 国产精品久久久久影院色老大 | 丰满亚洲少妇av| 肉色丝袜一区二区| 国产精品嫩草影院av蜜臀| 欧美日韩久久一区二区| 国产成人自拍网| 午夜一区二区三区在线观看| 国产欧美精品一区二区色综合朱莉 | 久久―日本道色综合久久| 91免费观看视频| 精品影视av免费| 亚洲欧美日韩国产综合| 国产日产欧美一区二区视频| 欧美这里有精品| 国产高清久久久久| 日韩黄色免费网站| 亚洲精品亚洲人成人网| 久久精品人人做| 6080国产精品一区二区| 日本韩国欧美在线| 国产盗摄女厕一区二区三区| 日韩专区在线视频| 亚洲激情五月婷婷| 中文一区二区完整视频在线观看| 欧美精品在线一区二区三区| 成人aa视频在线观看| 国产精品一区久久久久| 麻豆国产精品官网| 亚洲国产一区二区三区| 亚洲人成人一区二区在线观看 | 欧美一区二区二区| 欧美精选一区二区| 欧美剧情电影在线观看完整版免费励志电影 | 日韩精品1区2区3区| 亚洲一区二区精品久久av| 成人欧美一区二区三区白人| 欧美激情一区在线| 久久久精品tv| 国产亚洲欧美一区在线观看| 欧美精品一区二区三区一线天视频| 日韩一区二区三区四区五区六区| 欧美揉bbbbb揉bbbbb| 欧美在线观看视频在线| 91久久香蕉国产日韩欧美9色| 国产成人免费xxxxxxxx| 国产精品正在播放| 成人影视亚洲图片在线| 国产成人精品一区二| 国产精品99久久久久久久女警 | 欧美一区二区成人| 欧美一卡二卡三卡四卡| 欧美老女人第四色| 日韩午夜电影在线观看| 日韩欧美不卡一区| 久久综合视频网| 久久精品亚洲国产奇米99| 国产农村妇女精品| 亚洲欧洲www| 亚洲黄色片在线观看| 亚洲一区二区三区自拍| 婷婷国产在线综合| 久久国产福利国产秒拍| 国产精品1区2区3区在线观看| 风间由美性色一区二区三区| av一区二区三区四区| 欧美色精品天天在线观看视频| 欧美区视频在线观看| 欧美不卡激情三级在线观看| 国产欧美日韩亚州综合| 1024国产精品| 视频在线观看一区| 国产最新精品精品你懂的| 91网站在线播放| 欧美日韩大陆在线| 国产清纯在线一区二区www| 亚洲欧美色图小说| 日本不卡中文字幕| 丰满少妇在线播放bd日韩电影| 91福利精品第一导航| 欧美一区二区三区啪啪| 亚洲国产精品二十页| 亚洲午夜精品在线| 国产综合久久久久影院| 一本大道久久a久久精品综合| 9191成人精品久久| 国产精品国产三级国产aⅴ无密码| 亚洲综合成人在线视频| 激情综合色综合久久| 色婷婷综合久久久久中文 | 国产欧美日韩精品一区| 亚洲国产另类精品专区| 国模无码大尺度一区二区三区| 色悠悠久久综合| 精品国产乱码久久久久久免费| 亚洲欧美另类久久久精品| 精品一区二区国语对白| 欧美午夜精品一区| 国产精品久久久久久久久快鸭 | 欧美伊人久久久久久午夜久久久久| 日韩亚洲欧美中文三级| 中文字幕一区二区三区色视频| 日产精品久久久久久久性色| 91网站在线播放| 国产婷婷精品av在线| 蜜臀久久久久久久| 欧美私人免费视频| 国产精品视频一区二区三区不卡| 无码av中文一区二区三区桃花岛| 成人精品在线视频观看| 日韩精品一区二| 日本不卡1234视频| 在线观看一区不卡| 日韩毛片高清在线播放| 丁香五精品蜜臀久久久久99网站| 日韩一区二区三区av| 亚洲大片精品永久免费| 91官网在线观看| 国产精品福利一区二区| 成人免费毛片a| 久久精品一区二区三区av| 狠狠色丁香久久婷婷综合_中| 欧美日韩另类一区| 亚洲一区二区三区四区在线| 色综合天天综合网天天看片| 中文成人av在线| 成人综合婷婷国产精品久久| 国产日韩欧美精品综合| 国产精品夜夜爽| 国产无人区一区二区三区|