如何判断一个字符串能否被作为一个有效的Windows文件名?(300分)

  • 主题发起人 主题发起人 ow
  • 开始时间 开始时间
O

ow

Unregistered / Unconfirmed
GUEST, unregistred user!
我想知道一个有效的Windows文件名中可以包含哪些字符?如何判断一个字符串能否被用作一个文件名?例如,字符串"ABC"可以被用作文件名,但是"A/BC"就不可以,请问是否有相应的判断函数?
 
只要文件名不包含以下字符就可以:<br>/ / : * ? " &lt; &gt; | <br><br>当然,文件名最多只可以包含 215 个字符(包括空格)。
 
同意楼上,写个函数:<br>&nbsp; function IsValidFileName(FileName:string):Boolean;<br>&nbsp; const InValidChar:array[0..8] of string={'/','/',':','"','&lt;','&gt;','|'};<br>&nbsp; var<br>&nbsp; &nbsp; I:Integer;<br>&nbsp; begin<br>&nbsp; &nbsp; Result:=False;<br>&nbsp; &nbsp; for I:=0 to 8 do<br>&nbsp; &nbsp; &nbsp; if Pos(InValidChar,FileName)&gt;0 then<br>&nbsp; &nbsp; &nbsp;Exit;<br>&nbsp; &nbsp;Result:=True;<br>&nbsp; end;
 
function IsLegalFileName(FileName: string): boolean;<br>var<br>&nbsp; CharSet: set of '"'..'|';<br>&nbsp; i: integer;<br>begin<br>&nbsp; result := true;<br>&nbsp; FileName := ExtractFileName(FileName);<br>&nbsp; CharSet := ['"', '*', '/', ':', '&lt;', '&gt;', '?', '/', '|'];<br>&nbsp; for i := 1 to Length(FileName) do<br>&nbsp; begin<br>&nbsp; &nbsp; if FileName in CharSet then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; result := false;<br>&nbsp; &nbsp; &nbsp; exit;<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>end;<br>
 
用FileExists函数检查一下该文件是否存在即可;<br>如该路径并未创建,则用楼上的方法就行了;
 
很好,收錄!不過,我有一個問題,我的繁體中文中有簡體的文件名,於是我用一些其它的備份軟件無法備份和識別他們,這種隻有windows2000識別的文件名是否可以用程式找出來並改名呢?這種文件名是合法文件嗎???
 
哇!这么多分呀,可惜来迟了.
 
后退
顶部