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

📄 globfunction.cpp

📁 DarkATLSmtp(SMTP COM 组件原创代码),注册后可在Delphi中发邮件。
💻 CPP
字号:
//作者:高越 邮箱:darkprince@v.cn
//QQ:1738387 (本人只接受技术探讨以及软件项目合作事宜,其他误扰)
#include "stdafx.h"
#include "GlobFunction.h"
CString GetGUID(void)
{
	GUID tagGUID;
	HRESULT hr=CoCreateGuid(&tagGUID);
	if(FAILED(hr))
		return "";
	unsigned char* pGUID;
	UuidToString(&tagGUID,&pGUID);
	CString strGUID=pGUID;
	if(pGUID!=NULL)
		RpcStringFree(&pGUID);
	strGUID.MakeUpper();
	return strGUID;
}

int GetGroupLineCountFromMem(CString strContent,CString strGroupName)
{
	int nResult=0;
	strContent.TrimLeft();strContent.TrimRight();
	if(strContent.IsEmpty())
		return nResult;
	CString strTempLine=STR_KEY_GROUPNAME+strGroupName+STR_KEY_FIELDSPACE;
	while(!strContent.IsEmpty())
	{
		int nEnd=strContent.Find("\n");
		CString strTemp="";
		if(nEnd<0)
		{
			strTemp=strContent;
			strContent="";
		}
		else
		{
			strTemp=strContent.Left(nEnd);
			strContent=strContent.Mid(++nEnd);
		}
		strTemp.TrimLeft();strTemp.TrimRight();
		if(!strTemp.IsEmpty())
		{
			if(!strGroupName.IsEmpty())
			{
				int nStart=strTemp.Find(strTempLine);
				if(nStart>0)
					nResult++;
			}
			else
				nResult++;
		}
	}
	return nResult;
}

int GetLineCountFromMem(CString strContent)
{
	int nResult=0;
	strContent.TrimLeft();strContent.TrimRight();
	if(strContent.IsEmpty())
		return nResult;
	while(!strContent.IsEmpty())
	{
		int nEnd=strContent.Find("\n");
		CString strTemp="";
		if(nEnd<0)
		{
			strTemp=strContent;
			strContent="";
		}
		else
		{
			strTemp=strContent.Left(nEnd);
			strContent=strContent.Mid(++nEnd);
		}
		strTemp.TrimLeft();strTemp.TrimRight();
		if(!strTemp.IsEmpty())
			nResult++;
	}
	return nResult;
}

BOOL GetContentFromTextFile(CString strFilePath,CString* pContent)
{
	*pContent="";
	HANDLE hFile=CreateFile(strFilePath,GENERIC_READ,
		0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
	if((HANDLE)hFile==INVALID_HANDLE_VALUE)
		return FALSE;
	DWORD dwFileLength=GetFileSize(hFile,NULL);
	char* pFileBuf=new char[dwFileLength+1];
	DWORD dwReadLength=0;
	BOOL bResult=ReadFile(hFile,pFileBuf,dwFileLength,&dwReadLength,NULL);
	CloseHandle(hFile);
	if(!bResult)
	{
		delete []pFileBuf;
		return FALSE;
	}
	pFileBuf[dwFileLength]='\0';
	*pContent=pFileBuf;
	delete []pFileBuf;
	return TRUE;
}

BOOL DeleteMsgIdFromIni(CString strPath,CString strMsgId)
{
	strMsgId.TrimLeft();strMsgId.TrimRight();
	CString strFile;
	GetContentFromTextFile(strPath,&strFile);
	CString strTemp=STR_KEY_MSGID+strMsgId;
	int nStartTemp=strFile.Find(strTemp);
	if(nStartTemp>=0)
	{
		HANDLE hFile=CreateFile(strPath,GENERIC_WRITE,
			0,NULL,OPEN_ALWAYS|TRUNCATE_EXISTING,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
		if((HANDLE)hFile==INVALID_HANDLE_VALUE)
			return FALSE;
		CString strLeft=strFile.Left(nStartTemp);
		nStartTemp+=strTemp.GetLength();
		CString strRight=strFile.Mid(nStartTemp);
		strRight.TrimLeft();
		strFile=strLeft+strRight;
		SetFilePointer(hFile,0,NULL,FILE_BEGIN);
		WRITESTRINGTOFILE(strFile);
		CloseHandle(hFile);
	}
	else 
		return FALSE;
	return TRUE;
}

BOOL DelComGroupUserToFile(CString strPath,CString strGroupUserId)
{
	strGroupUserId.TrimLeft();strGroupUserId.TrimRight();
	if(strGroupUserId.IsEmpty())
		return FALSE;
	CString strFile;
	GetContentFromTextFile(strPath,&strFile);
	strFile.TrimLeft();strFile.TrimRight();
	strFile+=STR_KEY_LINEEND;
	CString strTemp=strGroupUserId+",";
	int nStartTemp=strFile.Find(strTemp);
	if(nStartTemp>=0)	
	{
		CString strFileTemp=strFile.Left(nStartTemp);
		CString strTemp=strFile.Mid(nStartTemp);
		int nEndTemp=strTemp.Find(STR_KEY_LINEEND);
		if(nEndTemp>0)
		{
			nEndTemp+=strlen(STR_KEY_LINEEND);
			strFileTemp+=strTemp.Mid(nEndTemp);
		}
		HANDLE hFile=CreateFile(strPath,GENERIC_WRITE,
			0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
		WRITESTRINGTOFILE(strFileTemp);
		CloseHandle(hFile);
	}
	return TRUE;

}

BOOL DelGroupUserToIni(CString strPath,CString strGroupUserId)
{
	strGroupUserId.TrimLeft();strGroupUserId.TrimRight();
	if(strGroupUserId.IsEmpty())
		return FALSE;
	CString strFile;
	GetContentFromTextFile(strPath,&strFile);
	CString strTemp=STR_KEY_MEMBERID+strGroupUserId;
	strTemp+=STR_KEY_FIELDSPACE;
	int nStartTemp=strFile.Find(strTemp);
	if(nStartTemp>=0)	
	{
		CString strFileTemp=strFile.Left(nStartTemp);
		CString strTemp=strFile.Mid(nStartTemp);
		int nEndTemp=strTemp.Find(STR_KEY_LINEEND);
		if(nEndTemp>0)
		{
			nEndTemp+=strlen(STR_KEY_LINEEND);
			strFileTemp+=strTemp.Mid(nEndTemp);
		}
		HANDLE hFile=CreateFile(strPath,GENERIC_WRITE,
			0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
		WRITESTRINGTOFILE(strFileTemp);
		CloseHandle(hFile);
	}
	return TRUE;
}

BOOL DelComGroupNameToFile(CString strPath,CString strGroupName)
{
	strGroupName.TrimLeft();strGroupName.TrimRight();
	if(strGroupName.IsEmpty())
		return FALSE;
	CString strFile;
	GetContentFromTextFile(strPath,&strFile);
	strFile.TrimLeft();strFile.TrimRight();
	strFile+=STR_KEY_LINEEND;
	CString strTemp=strGroupName+STR_KEY_LINEEND;
	int nStartTemp=strFile.Find(strTemp);
	if(nStartTemp>=0)
	{
		CString strFileTemp=strFile.Left(nStartTemp);
		CString strTemp=strFile.Mid(nStartTemp);
		int nEndTemp=strTemp.Find(STR_KEY_LINEEND);
		if(nEndTemp>0)
		{
			nEndTemp+=strlen(STR_KEY_LINEEND);
			strFileTemp+=strTemp.Mid(nEndTemp);
		}
		HANDLE hFile=CreateFile(strPath,GENERIC_WRITE,
			0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
		WRITESTRINGTOFILE(strFileTemp);
		CloseHandle(hFile);
		return TRUE;
	}
	else
		return FALSE;
}

BOOL DelGroupNameToIni(CString strPath,CString strGroupName)
{
	strGroupName.TrimLeft();strGroupName.TrimRight();
	if(strGroupName.IsEmpty())
		return FALSE;
	CString strFile;
	GetContentFromTextFile(strPath,&strFile);
	strFile.TrimLeft();strFile.TrimRight();
	strFile+=STR_KEY_LINEEND;
	CString strTemp=STR_KEY_GROUPNAME+strGroupName+STR_KEY_LINEEND;
	int nStartTemp=strFile.Find(strTemp);
	if(nStartTemp>=0)
	{
		CString strFileTemp=strFile.Left(nStartTemp);
		CString strTemp=strFile.Mid(nStartTemp);
		int nEndTemp=strTemp.Find(STR_KEY_LINEEND);
		if(nEndTemp>0)
		{
			nEndTemp+=strlen(STR_KEY_LINEEND);
			strFileTemp+=strTemp.Mid(nEndTemp);
		}
		HANDLE hFile=CreateFile(strPath,GENERIC_WRITE,
			0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
		WRITESTRINGTOFILE(strFileTemp);
		CloseHandle(hFile);
		return TRUE;
	}
	else
		return FALSE;
}

BOOL WriteComGroupUserToFile(CString strPath,CString strGroupName,
						 CString strMemberName,CString strMemberNick)
{
	strGroupName.TrimLeft();strGroupName.TrimRight();
	strMemberName.TrimLeft();strMemberName.TrimRight();
	strMemberNick.TrimLeft();strMemberNick.TrimRight();
	CString strFile;
	GetContentFromTextFile(strPath,&strFile);
	strFile.TrimLeft();strFile.TrimRight();
	strFile+=STR_KEY_LINEEND;
	CString strTemp=strMemberName+",";
	int nStartTemp=strFile.Find(strTemp);
	if(nStartTemp<0)
	{
		HANDLE hFile=CreateFile(strPath,GENERIC_WRITE,
			0,NULL,OPEN_ALWAYS|TRUNCATE_EXISTING,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
		if((HANDLE)hFile==INVALID_HANDLE_VALUE)
			return FALSE;	
		CString strLine;
		strLine=strMemberName+",";
		strLine+=strMemberNick+",";
		strLine+=strGroupName+STR_KEY_LINEEND;
		strFile=strLine+strFile;
		SetFilePointer(hFile,0,NULL,FILE_BEGIN);
		WRITESTRINGTOFILE(strFile);
		CloseHandle(hFile);
	}
	return TRUE;
}



BOOL WriteGroupUserToIni(CString strGroupUserIniPath,CString strGroupName,
						 CString strMemberName,CString strMemberNick,
						 CString strMemberAddr,CString strMemberTel,
						 CString strMemberRemark)
{
	strGroupName.TrimLeft();strGroupName.TrimRight();
	strMemberName.TrimLeft();strMemberName.TrimRight();
	strMemberNick.TrimLeft();strMemberNick.TrimRight();
	strMemberAddr.TrimLeft();strMemberAddr.TrimRight();
	strMemberRemark.TrimLeft();strMemberRemark.TrimRight();
	CString strFile;
	HANDLE hFile=CreateFile(strGroupUserIniPath,GENERIC_WRITE,
			0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
	if((HANDLE)hFile==INVALID_HANDLE_VALUE)
		return FALSE;	
	SetFilePointer(hFile,0,NULL,FILE_END);
	CString strLine=STR_KEY_MEMBERID;
	strLine+=GetGUID()+STR_KEY_FIELDSPACE;	

	strLine+=STR_KEY_GROUPNAME;
	strLine+=strGroupName+STR_KEY_FIELDSPACE;

	strLine+=STR_KEY_MEMBERNAME;
	strLine+=strMemberName+STR_KEY_FIELDSPACE;

	strLine+=STR_KEY_MEMBERNICK;
	strLine+=strMemberNick+STR_KEY_FIELDSPACE;

	strLine+=STR_KEY_MEMBERADDR;
	strLine+=strMemberAddr+STR_KEY_FIELDSPACE;

	strLine+=STR_KEY_MEMBERREMARK;
	strLine+=strMemberRemark+STR_KEY_FIELDSPACE;

	strLine+=STR_KEY_MEMBERTEL;
	strLine+=strMemberTel+STR_KEY_FIELDSPACE;
	strLine+=STR_KEY_LINEEND;
	WRITESTRINGTOFILE(strLine);
	CloseHandle(hFile);
	return TRUE;
}

BOOL WriteComGroupNameToFile(CString strPath,CString strGroupName)
{
	strGroupName.TrimLeft();strGroupName.TrimRight();
	CString strFile;
	GetContentFromTextFile(strPath,&strFile);
	strFile.TrimLeft();strFile.TrimRight();
	strFile+=STR_KEY_LINEEND;
	CString strTemp=strGroupName+STR_KEY_LINEEND;
	int nStartTemp=strFile.Find(strTemp);
	if(nStartTemp<0)
	{
		HANDLE hFile=CreateFile(strPath,GENERIC_WRITE,
			0,NULL,OPEN_ALWAYS|TRUNCATE_EXISTING,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
		if((HANDLE)hFile==INVALID_HANDLE_VALUE)
			return FALSE;	
		CString strLine=strGroupName+STR_KEY_LINEEND;
		strFile=strLine+strFile;
		SetFilePointer(hFile,0,NULL,FILE_BEGIN);
		WRITESTRINGTOFILE(strFile);
		CloseHandle(hFile);
	}
	return TRUE;

}

BOOL WriteGroupNameToIni(CString strPath,CString strGroupName)
{
	strGroupName.TrimLeft();strGroupName.TrimRight();
	CString strFile;
	GetContentFromTextFile(strPath,&strFile);
	strFile.TrimLeft();strFile.TrimRight();
	strFile+=STR_KEY_LINEEND;
	CString strTemp=STR_KEY_GROUPNAME+strGroupName+STR_KEY_LINEEND;
	int nStartTemp=strFile.Find(strTemp);
	if(nStartTemp<0)
	{
		HANDLE hFile=CreateFile(strPath,GENERIC_WRITE,
			0,NULL,OPEN_ALWAYS|TRUNCATE_EXISTING,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
		if((HANDLE)hFile==INVALID_HANDLE_VALUE)
			return FALSE;	
		CString strLine=STR_KEY_GROUPNAME;
		strLine+=strGroupName+STR_KEY_LINEEND;
		strFile=strLine+strFile;
		SetFilePointer(hFile,0,NULL,FILE_BEGIN);
		WRITESTRINGTOFILE(strFile);
		CloseHandle(hFile);
	}
	return TRUE;
}

BOOL WriteMsgIdToIni(CString strPath,CString strMsgId)
{
	strMsgId.TrimLeft();strMsgId.TrimRight();
	CString strFile;
	GetContentFromTextFile(strPath,&strFile);
	CString strTemp=STR_KEY_MSGID+strMsgId;
	int nStartTemp=strFile.Find(strTemp);
	if(nStartTemp<0)
	{
		HANDLE hFile=CreateFile(strPath,GENERIC_WRITE,
			0,NULL,OPEN_ALWAYS|TRUNCATE_EXISTING,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
		if((HANDLE)hFile==INVALID_HANDLE_VALUE)
			return FALSE;	
		CString strLine=STR_KEY_MSGID;
		strLine+=strMsgId+STR_KEY_LINEEND;
		strFile=strLine+strFile;
		SetFilePointer(hFile,0,NULL,FILE_BEGIN);
		WRITESTRINGTOFILE(strFile);
		CloseHandle(hFile);
	}
	return TRUE;
}

void CopyDirectory(CString strSrcDir,CString strDstDir)
{
	strSrcDir.TrimLeft();strSrcDir.TrimRight();
	strDstDir.TrimLeft();strDstDir.TrimRight();
	if(strSrcDir.IsEmpty()||strDstDir.IsEmpty()||(strSrcDir==strDstDir))
		return;
	if(strSrcDir.GetAt(strSrcDir.GetLength()-1)!='\\')
		strSrcDir+='\\';
	if(strDstDir.GetAt(strDstDir.GetLength()-1)!='\\')
		strDstDir+='\\';
	CString strSrcDirTemp=strSrcDir;
	CString strDstDirTemp=strDstDir;
	CreateDirectory(strDstDirTemp,NULL);
	strSrcDir+="*.*";
	WIN32_FIND_DATA tagFindData;
	HANDLE hResult=FindFirstFile(strSrcDir,&tagFindData);
	while(TRUE)
	{
		BOOL bResult=::FindNextFile(hResult,&tagFindData);
		if(!bResult)
		{
			FindClose(hResult);
			break;
		}
		//copy file in directory
		else if(tagFindData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE)
		{
			CString strFileName=tagFindData.cFileName;
			if(strFileName==".."||strFileName==".")
				continue;
			CString strSrcPath=strSrcDirTemp+strFileName;
			CString strDstPath=strDstDirTemp+strFileName;
			CopyFile(strSrcPath,strDstPath,FALSE);
		}
		else if(tagFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			CString strFileName=tagFindData.cFileName;
			if(strFileName==".."||strFileName==".")
				continue;
			CString strSrcPath=strSrcDirTemp+strFileName;
			strSrcPath+='\\';
			CString strDstPath=strDstDirTemp+strFileName;
			strDstPath+='\\';
			CopyDirectory(strSrcPath,strDstPath);
		}
	}							
}

void DeleteDirectory(CString strDir)
{
	strDir.TrimLeft();strDir.TrimRight();
	if(strDir.IsEmpty()) 
	{
		RemoveDirectory(strDir);
		return;
    }
	if(strDir.GetAt(strDir.GetLength()-1)!='\\')
		strDir+='\\';
	CString strDirTemp=strDir;
	strDir+="*.*";
	WIN32_FIND_DATA tagFindData;
	HANDLE hResult=FindFirstFile(strDir,&tagFindData);
	while(TRUE)
	{
		BOOL bResult=::FindNextFile(hResult,&tagFindData);
		if(!bResult)
		{
			FindClose(hResult);
			break;
		}
		//delete file in directory
		else if(tagFindData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE)
		{
			CString strFileName=tagFindData.cFileName;
			if(strFileName==".."||strFileName==".")
				continue;
			CString strPath=strDirTemp+strFileName;
			SetFileAttributes(strPath, FILE_ATTRIBUTE_NORMAL);
			DeleteFile(strPath);
		}
		else if(tagFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			CString strFileName=tagFindData.cFileName;
			if(strFileName==".."||strFileName==".")
				continue;
			CString strPath=strDirTemp+strFileName;
			SetFileAttributes(strPath, FILE_ATTRIBUTE_NORMAL);
			strPath+='\\';
			DeleteDirectory(strPath);
			RemoveDirectory(strPath);						
		}
	}						
	// 然后删除该文件夹
	RemoveDirectory(strDirTemp);
}

CString GetValueByKeyFromBuf(CString strBuf,CString strKey,CString strEndFlag)
{
	int nStart=strBuf.Find(strKey);
	if(nStart<0)
		return "";
	CString strBufTemp=strBuf.Mid(nStart);
	nStart=0;
	nStart+=strKey.GetLength();
	//nStart++;
	int nEnd=strBufTemp.Find(strEndFlag);
	if(nEnd<0)
		nEnd=strBufTemp.GetLength();
	CString strReturn=strBufTemp.Mid(nStart,nEnd-nStart);
	strReturn.TrimLeft();strReturn.TrimRight();
	return strReturn;
}

⌨️ 快捷键说明

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