📄 globfunction.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 + -