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

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

?? common.cpp

?? Windows環境下不同文件夾下文件的比較、合并
?? CPP
字號:
/*********************************************************************
File Name		:	Common.cpp
Discription		:	Define common function

Author			:	Chenel
Date			:	2005/10/22
*********************************************************************/

/*********************************************************************

	Include section

*********************************************************************/
#include "StdAfx.h"
#include <io.h>
#include "Common.h"

/*********************************************************************

	Global varible declare section

*********************************************************************/

ErrorFileInfo_t		gstFileInfo;

/*********************************************************************

	Func declare section

*********************************************************************/
/*********************************************************************
Function Name	:	InitialErrorFile
Discription		:	Initial error file

Author			:	Chenel
Date			:	2005/10/23
*********************************************************************/
int InitialErrorFile( CString& strFolderName )
{
	gstFileInfo.strFolderName = strFolderName;
	gstFileInfo.ErrorTable.RemoveAll();

	return SUCCESS;
}
/*********************************************************************
Function Name	:	AddErrInfo
Discription		:	Add error information

Author			:	Chenel
Date			:	2005/10/23
*********************************************************************/
int AddErrInfo( CString strErrType, CString& strErrContent )
{
	CString		strWholeContent = NULSTRING;

	strWholeContent = strErrType + ERRCONBREAK + strErrContent;
	gstFileInfo.ErrorTable.Add( strWholeContent );
	return SUCCESS;
}
/*********************************************************************
Function Name	:	WriteErrFile
Discription		:	Write error file

Author			:	Chenel
Date			:	2005/10/23
*********************************************************************/
int WriteErrFile()
{
	int		iRet = 0;
	int		iCount = 0;
	int		iLoop = 0;
	CString	strFileName = NULSTRING;
	CString	strBreak = _T("\r\n");
	CString	strErrorContent = NULSTRING;

	iCount = gstFileInfo.ErrorTable.GetSize();
	if(0 == iCount)
	{
		return SUCCESS;
	}

	// Open file
	strFileName = gstFileInfo.strFolderName + FILEPATHFLG + ERRFILENAME;
	FILE*	pFile = NULL;

	pFile = _tfopen(strFileName, _T("wb"));
	if( NULL == pFile )
	{
		ASSERT( FALSE );
		return FAILURE;
	}

	// Write file
	for( iLoop = 0; iLoop < iCount; iLoop++ )
	{
		strErrorContent += strBreak;
		strErrorContent += gstFileInfo.ErrorTable.GetAt(iLoop);
	}
	int iLen = strErrorContent.GetLength();
	fwrite(strErrorContent.GetBuffer(0), iLen * sizeof(TCHAR), 1, pFile);

	// Close file
	fclose( pFile );


	return SUCCESS;
}
/*********************************************************************
Function Name	:	SourceFolderReasonable
Discription		:	Judge whether source folder is reasonable
Return value	:	TRUE/FALSE

Author			:	Chenel
Date			:	2005/10/22
*********************************************************************/
BOOL SourceFolderIsReasonable( CString& strFolerName )
{
	if(0 != _taccess(strFolerName,0))
	{
		return FALSE;
	}

	return TRUE;
}
/*********************************************************************
Function Name	:	DestFolderIsReasonable
Discription		:	Judge whether dest folder is reasonable
Return value	:	TRUE/FALSE

Author			:	Chenel
Date			:	2005/10/22
*********************************************************************/
BOOL DestFolderIsReasonable( CString& strFolerName )
{
	if(0 != _taccess(strFolerName,0))
	{
		return FALSE;
	}

	return TRUE;
}
/*********************************************************************
Function Name	:	MakeDirectory
Discription		:	Create specified directory
Return value	:	SUCCESS/FAILURE

Author			:	Chenel
Date			:	2005/10/22
*********************************************************************/
int MakeDirectory( CString& strDirectory )
{
	return SUCCESS;
}
/*********************************************************************
Function Name	:	GetSpecifyFolderName
Discription		:	Get folder name by user specified
Return value	:	SUCCESS/FAILURE

Author			:	Chenel
Date			:	2005/10/22
*********************************************************************/
int GetSpecifyFolderName( HWND hDlgHandle, CString& strFolerName )
{
	ITEMIDLIST*			pItemIdList;
	BROWSEINFO			BrowseInfo;
	TCHAR				stzFolder[_MAX_PATH];  
 
	memset(stzFolder, 0, _MAX_PATH*sizeof(TCHAR));
	BrowseInfo.hwndOwner = hDlgHandle;
	BrowseInfo.pidlRoot = NULL;
	BrowseInfo.pszDisplayName = stzFolder;
	BrowseInfo.lpszTitle = _T("Select folder");
	BrowseInfo.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX;
	BrowseInfo.lpfn = NULL;
 
	pItemIdList = SHBrowseForFolder(&BrowseInfo);
	SHGetPathFromIDList(pItemIdList, stzFolder);
	strFolerName = stzFolder;

	return SUCCESS;
}
/*********************************************************************
Function Name	:	GetAllSubFilesIntoOneFolder
Discription		:	Get all sub files into one folder
Return value	:	SUCCESS/FAILURE

Author			:	Chenel
Date			:	2005/10/22
*********************************************************************/
int GetAllSubFilesIntoOneFolder( CString BaseFolderDir, 
			CString DestFolderDir, CStringArray& BaseFilePathTable )
{
	BOOL				bRet = FALSE;
	int					iRet = 0;
	int					iFileCount = 0;
	int					iLoop = 0;
	CString				strOriginalFilePath;
	CString				strDestFilePath;
	CString				strFileName;


	// Copy files
	iFileCount = BaseFilePathTable.GetSize();
	for( iLoop = 0; iLoop < iFileCount; iLoop++ )
	{
		strOriginalFilePath = BaseFilePathTable.GetAt( iLoop );
		CFile File( strOriginalFilePath, CFile::modeRead );
		strFileName = File.GetFileName();
		File.Close();
		strDestFilePath = DestFolderDir + FILEPATHFLG + strFileName;

		if( 0 == _taccess(strDestFilePath,0) )
		{
			// Check whether two files are identical
			BOOL bIdenticalFlg = TwoFilesAreIdentical(strOriginalFilePath, strDestFilePath);

			if(TRUE != bIdenticalFlg)
			{
				CString		strWarnning = NULSTRING;

				strWarnning = _T("Exist a same name file   but contents different <");
				strWarnning += strFileName;
				strWarnning += _T(">   So have not copied <");
				strWarnning += strOriginalFilePath;
				strWarnning += _T("> into dest folder.");
				AddErrInfo( ERRTYPE_WARNNING, strWarnning );
			}

			continue;
		}

		bRet = CopyFile( strOriginalFilePath, strDestFilePath, FALSE );
		if( FALSE == bRet )
		{
			CString		strError = NULSTRING;
			strError = _T("Copy file <");
			strError += strOriginalFilePath;
			strError += _T("> failure!");
			AddErrInfo( ERRTYPE_ERR, strError );
			continue;
		}
	}

	return SUCCESS;
}
/*********************************************************************
Function Name	:	GetAllSubFilesPath
Discription		:	Get all sub file path
Return value	:	SUCCESS/FAILURE

Author			:	Chenel
Date			:	2005/10/22
*********************************************************************/
int GetAllSubFilesPath( CString strDir, CStringArray& FileList )
{
	BOOL		bSearchResult = FALSE;
	CString		strSearchRange;
	CString		strFilePath;
	CFileFind	finder;

	strSearchRange = strDir + FILEFINDTYPE_ALL;
	bSearchResult = finder.FindFile( strSearchRange );
	while( bSearchResult )
	{
		// Get next file
		bSearchResult = finder.FindNextFile();
		if( (finder.IsDots()) || (finder.IsSystem()) || (finder.IsTemporary()) )
		{
			continue;
		}
			
		if (finder.IsDirectory())
		{
			CString strSubDir = finder.GetFilePath();
			GetAllSubFilesPath( strSubDir, FileList );
			continue;
		}

		strFilePath = finder.GetFilePath();
		FileList.Add( strFilePath);
	}

	finder.Close();
	return SUCCESS;
}
/*********************************************************************
Function Name	:	DelFolderCounterFiles
Discription		:	Delete counter folder file
Return value	:	SUCCESS/FAILURE

Author			:	Chenel
Date			:	2005/10/22
*********************************************************************/
int DelFolderCounterFiles( CString BaseFolderDir, CString DestFolderDir, 
			CStringArray& BaseFilePathTable, CStringArray& DestFilePathTable, 
			int iDelType )
{
	BOOL				bRet = FALSE;
	BOOL				bExistSameFileFlg = FALSE;
	int					iBaseCount = 0;
	int					iDestCount = 0;
	int					iBaseLoop = 0;
	int					iDestLoop = 0;
	int					iBaseFolderLen = 0;
	int					iDestFolderLen = 0;
	CString				strBaseSubPath = NULSTRING;
	CString				strDestSubPath = NULSTRING;
	CString				strTempPath = NULSTRING;
	CStringArray		BaseSubTable;
	CStringArray		DestSubTable;

	// Get base folder's sub file path
	iBaseFolderLen = BaseFolderDir.GetLength();
	iBaseCount = BaseFilePathTable.GetSize();
	for( iBaseLoop = 0; iBaseLoop < iBaseCount; iBaseLoop++ )
	{
		strTempPath = BaseFilePathTable.GetAt(iBaseLoop);
		strBaseSubPath = strTempPath.Right(strTempPath.GetLength() - iBaseFolderLen );
		BaseSubTable.Add( strBaseSubPath );
	}

	// Get dest folder's sub file path
	iDestFolderLen = DestFolderDir.GetLength();
	iDestCount = DestFilePathTable.GetSize();
	for( iDestLoop = 0; iDestLoop < iDestCount; iDestLoop++ )
	{
		strTempPath = DestFilePathTable.GetAt(iDestLoop);
		strDestSubPath = strTempPath.Right(strTempPath.GetLength() - iDestFolderLen );
		DestSubTable.Add( strDestSubPath );
	}

	// Start delete
	for( iDestLoop = 0; iDestLoop < iDestCount; iDestLoop++ )
	{
		strTempPath = DestFilePathTable.GetAt( iDestLoop );
		strDestSubPath = DestSubTable.GetAt( iDestLoop );
		for( iBaseLoop = 0; iBaseLoop < iBaseCount; iBaseLoop++ )
		{
			strBaseSubPath = BaseSubTable.GetAt( iBaseLoop );
			if( strBaseSubPath == strDestSubPath )
			{
				break;
			}
		}
		if( iBaseLoop < iBaseCount )
		{
			bExistSameFileFlg = TRUE;
		}
		else
		{
			bExistSameFileFlg = FALSE;
		}

		if( ( !bExistSameFileFlg && (OPTYPE_DELDIFFERENTFILE == iDelType) ) ||
			( bExistSameFileFlg && (OPTYPE_DELSAMEFILE == iDelType) ) )
		{
			SetFileAttributes( strTempPath, FILE_ATTRIBUTE_NORMAL );
			bRet = DeleteFile( strTempPath );
			if( FALSE == bRet )
			{
				CString		strError = NULSTRING;
				strError = _T("Delete file <");
				strError += strTempPath;
				strError += _T("> failure!");
				AddErrInfo( ERRTYPE_ERR, strError );
				continue;
			}
		}
	}


	return SUCCESS;
}

/*********************************************************************
Function Name	:	TwoFilesAreIdentical
Discription		:	Whether two files are identical
Return value	:	TRUE/FALSE

Author			:	Chenel
Date			:	2006/06/28
*********************************************************************/
int TwoFilesAreIdentical(CString strFile1, CString strFile2)
{
	BOOL bRet = FALSE;
	int iOriFileLen = 0;
	int iDestFileLen = 0;

	// Open two files
	CFile File1;
	CFile File2;

	if((0 == File1.Open(strFile1, CFile::modeRead)) || 
		(0 == File2.Open(strFile2, CFile::modeRead)))
	{
		ASSERT(FALSE);
		return FALSE;
	}

	// Get two files's size
	unsigned long iFile1Size = File1.GetLength();
	unsigned long iFile2Size = File2.GetLength();
	if(iFile1Size != iFile2Size)
	{
		return FALSE;
	}

	// Check every block of two files
	void* File1Block = NULL;
	void* File2Block = NULL;
	File1Block = malloc(iFile1Size);
	if(NULL == File1Block)
	{
		ASSERT(FALSE);
		return FALSE;
	}
	memset(File1Block, 0, sizeof(File1Block));
	File2Block = malloc(iFile2Size);
	if(NULL == File2Block)
	{
		ASSERT(FALSE);
		free(File1Block);
		return FALSE;
	}
	memset(File2Block, 0, sizeof(File2Block));

	if(iFile1Size != File1.ReadHuge(File1Block, iFile1Size))
	{
		ASSERT(FALSE);
		free(File1Block);
		free(File2Block);
		return FALSE;
	}
	if(iFile2Size != File2.ReadHuge(File2Block, iFile2Size))
	{
		ASSERT(FALSE);
		free(File1Block);
		free(File2Block);
		return FALSE;
	}

	if(0 == memcmp(File1Block, File2Block, iFile1Size))
	{
		bRet = TRUE;
	}

	free(File1Block);
	free(File2Block);

	return bRet;
}
// End of file

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线观看欧美| 国产精品视频九色porn| 日韩不卡在线观看日韩不卡视频| 欧美日韩精品一区二区| 午夜电影网一区| 日韩欧美一区二区三区在线| 久久99精品国产麻豆婷婷| 26uuu久久天堂性欧美| 大美女一区二区三区| 一色屋精品亚洲香蕉网站| 欧美日韩综合一区| 日韩福利电影在线观看| 久久久美女毛片| 在线观看免费亚洲| 欧美bbbbb| 成人免费小视频| 欧美另类变人与禽xxxxx| 美腿丝袜一区二区三区| 亚洲国产欧美在线| 日韩欧美一级二级三级| 成人网男人的天堂| 日韩国产在线观看一区| 亚洲国产经典视频| 91精品免费在线观看| 成人短视频下载| 秋霞电影网一区二区| 中文字幕av一区 二区| 不卡的av电影在线观看| 一区二区三区在线不卡| 精品精品国产高清a毛片牛牛| 99久久99久久精品免费观看| 蜜桃视频一区二区三区| 亚洲欧美一区二区久久| 久久综合九色综合久久久精品综合| 91在线你懂得| 国产东北露脸精品视频| 丝袜美腿亚洲色图| 亚洲欧美日韩国产成人精品影院| 日韩精品在线一区二区| 91麻豆swag| 国产精品一区二区三区99| 亚洲国产精品一区二区www| 国产日韩亚洲欧美综合| 欧美一区二区在线视频| 91麻豆.com| 国产盗摄精品一区二区三区在线| 日韩 欧美一区二区三区| 亚洲激情av在线| 国产精品传媒视频| 国产欧美视频在线观看| 久久亚洲一区二区三区四区| 欧美日韩一本到| 色菇凉天天综合网| eeuss鲁片一区二区三区在线看| 精品在线观看免费| 捆绑变态av一区二区三区| 亚洲成精国产精品女| 亚洲免费资源在线播放| 国产精品久久久久婷婷| 中文字幕乱码亚洲精品一区| 日韩免费成人网| 欧美一二三区精品| 成人欧美一区二区三区白人 | 亚洲成人一区二区在线观看| 中文字幕 久热精品 视频在线| 精品毛片乱码1区2区3区| 欧美一区二区视频观看视频| 欧美视频一区二区三区| 99re成人精品视频| 99精品偷自拍| 色综合色狠狠天天综合色| 成人av资源下载| 成人动漫视频在线| 福利一区二区在线| 国产精品123| 成人精品高清在线| 91在线小视频| 在线欧美日韩精品| 欧美日韩在线电影| 欧美精品一级二级| 91精品婷婷国产综合久久竹菊| 7777精品伊人久久久大香线蕉的| 91精品一区二区三区在线观看| 欧美精品视频www在线观看| 欧美裸体一区二区三区| 在线播放欧美女士性生活| 欧美一级午夜免费电影| 精品久久久久久久久久久久包黑料| 欧美一区二区三区思思人| 欧美成人精品二区三区99精品| 337p日本欧洲亚洲大胆色噜噜| 久久久久久电影| 亚洲欧洲www| 亚洲午夜日本在线观看| 丝袜美腿亚洲一区| 国产在线精品免费av| 国产成a人亚洲| 色综合天天综合网国产成人综合天| 日本韩国精品在线| 56国语精品自产拍在线观看| 日韩精品最新网址| 国产精品成人一区二区三区夜夜夜| 一区二区三区精品在线| 免费成人美女在线观看.| 国产成人综合网| 日本高清不卡在线观看| 日韩一区二区三区免费观看| 国产拍欧美日韩视频二区| 一区二区三区成人| 久久99热这里只有精品| 成人av在线播放网站| 精品视频在线免费看| 国产亚洲1区2区3区| 亚洲成人av一区| 国产不卡高清在线观看视频| 欧美影院一区二区三区| 精品久久久久久久久久久院品网| 综合久久一区二区三区| 久久爱www久久做| 欧洲亚洲国产日韩| 国产欧美一区二区三区网站| 亚洲制服丝袜一区| 国产成人自拍网| 欧美一区三区四区| 亚洲欧美国产毛片在线| 国产一区二区三区免费在线观看| 91官网在线观看| 国产欧美一区二区三区在线看蜜臀| 婷婷六月综合网| 一本色道久久综合亚洲91| wwww国产精品欧美| 日韩av在线免费观看不卡| 91蝌蚪porny九色| 久久精品免费在线观看| 蜜臀av性久久久久蜜臀av麻豆 | 欧美亚洲另类激情小说| 久久久www成人免费毛片麻豆| 亚洲丶国产丶欧美一区二区三区| 国产69精品一区二区亚洲孕妇| 日韩亚洲欧美在线观看| 一区二区三区四区精品在线视频| 国产伦精品一区二区三区视频青涩| 欧美三级一区二区| 亚洲男同性恋视频| av在线播放不卡| 国产无人区一区二区三区| 热久久久久久久| 欧美疯狂性受xxxxx喷水图片| 一区二区三区加勒比av| 91在线观看地址| 国产精品久久久久久久久久免费看 | 首页国产欧美日韩丝袜| 欧美亚洲精品一区| 亚洲综合成人网| 色狠狠综合天天综合综合| 亚洲欧美激情在线| 色婷婷香蕉在线一区二区| 国产精品国产精品国产专区不片| 国产精品一区免费视频| 26uuu欧美| 国产主播一区二区| 国产午夜精品一区二区三区四区| 精品制服美女丁香| 久久在线免费观看| 韩国精品久久久| 国产拍揄自揄精品视频麻豆| 国产精品456| 国产精品亲子乱子伦xxxx裸| 北条麻妃一区二区三区| 亚洲色图视频网站| 91激情在线视频| 性欧美大战久久久久久久久| 欧美男女性生活在线直播观看| 五月激情六月综合| 日韩免费观看高清完整版在线观看| 麻豆国产一区二区| 国产亚洲综合色| 99re这里只有精品视频首页| 有码一区二区三区| 91精品国产福利在线观看| 九九**精品视频免费播放| 久久精品日韩一区二区三区| 成人黄色片在线观看| 亚洲精品乱码久久久久久日本蜜臀| 欧美亚洲国产一卡| 精品一区二区三区在线观看| 中文字幕不卡在线观看| 日本久久一区二区| 美女www一区二区| 国产日韩亚洲欧美综合| 色偷偷久久人人79超碰人人澡| 亚洲一区二区三区自拍| 日韩美女一区二区三区| 不卡在线视频中文字幕| 亚洲成av人片在线| 久久久国际精品| 欧美日韩小视频| 丁香网亚洲国际| 香蕉久久夜色精品国产使用方法 | 91精品国产综合久久久久久久|