C++ 常用代码001 IsValidFileName VC/MFC 判断有效文件名

来源:互联网 发布:明源软件股份有限公司 编辑:程序博客网 时间:2024/06/11 19:18


/*
没有扩展名要求的文件名检查\n
1长度为0\n
2目录部分不正确\n
3文件名含有非法字符\n
4如果扩展名不是*,那么检查扩展名是否符合\n
*/
BOOL CCommonFunc::S_IsValidFileName(CString &strP, CString &strExt)
{
 // LN add 2005/05/18 begin
 BOOL ret;
 //删除开头和结尾的无意字符
 strP.TrimLeft();
 strP.TrimRight();

 // check length > 0
 int length = strP.GetLength();
 if(length <= 0)
 {
  return FALSE;
 }

 // check last \\ or / position
 int pos = 0;
 int pos1 = strP.ReverseFind('\\');
 int pos2 = strP.ReverseFind('/');

 // get max pos
 if(pos1 > pos2)
 {
  pos = pos1;
 }
 else
 {
  pos = pos2;
 }

 // check pos
 if(pos >= 0 && pos < length)
 {
  // valid dir
  ret = S_IsDirectory(strP.Left(pos));
  if(ret == TRUE)
  {
   CString strT = strP.Right(length - pos - 1);

   // valid file name
   if(strT.
    FindOneOf(_T("\\/:,;*?\"<>|")) == -1
    && strT.GetLength() > 0)
   {
    // check fdb
    if(strExt.CompareNoCase(_T("*")) == 0)
    {
     return TRUE;
    }
    if(strP.Right(strExt.GetLength()).
     CompareNoCase(strExt) != 0)
    {
     strP += strExt;
    }
    return TRUE;
   }
  }
  return FALSE;
 }

 return TRUE;
 // LN add 2005/05/18 end
}

0 0