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

时间:2015-06-02 06:51:46   收藏:0   阅读:204


/*
没有扩展名要求的文件名检查\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
}

原文:http://blog.csdn.net/q1q2q3q4ln/article/details/46320513

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!