检查文件名&路径是否合法的函数

{===================================================
功    能 : 检查文件路径和文件名是否合法
 
参    数 : Filename : string //文件名
 
返 回 值 :  True : 合法   |   False : 不合法
 
备    注 :  仅检查是否合法,不检测文件是否存在
 
作    者 :  yueue (antong)    2004.8.22
            QQ: 20613165  Email: yueue{A}qq.com
=====================================================}
 
 
 
 
   //检查文件名&路径是否合法的函数
function checkFilename(strFilename:string):boolean;
 
  function c(s:string):boolean; //子函数:连带检测
  var
   i:integer;
   s1:string;
   f,g,h:boolean;
  begin
    f:=false;
    g:=false;
    h:=false;
    result:=true;
    for i:=0 to length(s)-1 do
    begin
      s1:=copy(s,i,1);
        //检测\的连带
        if s1='\' then
        begin
            if f then
            begin
               result:=false;
               exit;
            end
            else
            begin
            f:=true;
            result:=true;
            end;
 
      end
      else
      begin
         f:=false;
         result:=true;
      end;
       //检测:的连带
 
        if s1=':' then
        begin
            if g then
            begin
               result:=false;
               exit;
            end
            else
            begin
            g:=true;
            result:=true;
            end;
 
      end
      else
      begin
         g:=false;
         result:=true;
      end;
      //检测.的连带
       
        if s1='.' then
        begin
            if h then
            begin
               result:=false;
               exit;
            end
            else
            begin
            h:=true;
            result:=true;
            end;
 
      end
      else
      begin
         h:=false;
         result:=true;
      end;
     
 
     end;
 
  end;
begin
  if (extractfilename(strFilename)=strFilename)是否只输入了文件名而没有输路径
  or (extractfilename(strFilename)='')//是否只输入了路径没有输文件名
  or (extractfileext(extractfilename(strFilename))='')//是否格式错误(比如乱输)
  or (extractfileext(extractfilename(strFilename))='.')//是否没有后缀
  or (extractfileext(extractfilename(strFilename))=extractfilename(strFilename))
      //是否只输入了文件名而没有输路径
  or (length(extractfileext(extractfilename(strFilename)))>5)//后缀是否超了5个字节
  or (length(extractfilename(strFilename))>225)//文件名是否超过255个字节
  or (pos('\',strfilename)=0)//判断是否有'\'
  or (pos('.',strfilename)=0)//判断是否有'.'
  or (pos(':',strfilename)=0)//判断是否有':'
  or (pos('\',extractfilename(strfilename))<>0)//判断文件名是否有非法字符
  or (pos('/',extractfilename(strfilename))<>0)
  or (pos(':',extractfilename(strfilename))<>0)
  or (pos('*',extractfilename(strfilename))<>0)
  or (pos('?',extractfilename(strfilename))<>0)
  or (pos('"',extractfilename(strfilename))<>0)
  or (pos('<',extractfilename(strfilename))<>0)
  or (pos('>',extractfilename(strfilename))<>0)
  or (pos('|',extractfilename(strfilename))<>0)
  or (strfilename='')//是否没有输入任何东西
  or (not c(strfilename))//用检测连带函数检测是否出现\.:的连带
  then
  result:=false else result:=true; //输出
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值