文件名称的有效性检验

gamaster 2005-09-04 11:35:32
我不想通过
try
...
except
showmessage('is not valid');
end;

有没有其他方法或函数。
...全文
336 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwm09 2005-09-18
  • 打赏
  • 举报
回复
关注
myy 2005-09-18
  • 打赏
  • 举报
回复
对于这样的问题,我认为最根本最彻底的办法就是象 hthunter(核桃...) 说的那样:

用你的文件名在临时文件夹里尝试创建一个空文件,可以创建就表示是合法的

-------------
原因很简单:除了非法字符,还有一些特殊的文件名不能使用,
比如 com1,com2...LTP1,LPT2...(天知道M$保留了哪些...)
几乎没办法枚举判断。
ronaltang 2005-09-18
  • 打赏
  • 举报
回复
楼主,我个人觉得是别人高估你的智商了^!^
阿呆_ 2005-09-06
  • 打赏
  • 举报
回复
result := FileExists(AName);
if not result then
begin
result := CloseHandle(FileCreate(AName));
if result then DeleteFile(AName);
end;
hthunter 2005-09-06
  • 打赏
  • 举报
回复
一个最简单的方法,用你的文件名在临时文件夹里尝试创建一个空文件,可以创建就表示是合法的
senfore 2005-09-06
  • 打赏
  • 举报
回复
我的函数应该是正解,虽然乱码有可能无法保存,那是因为乱码中包含/\<>|:?*"这些字符才无法保存的,你可以保存一个乱码文件名看看,windows是会报告你的文件名中不能包含的字符的列表的。。
gamaster 2005-09-06
  • 打赏
  • 举报
回复
只有文件名称,没有路径的,而且我就遇到乱码的字符而且不含有\/:*?"<>|中任何一个,但也不能作为文件名的.只可惜我把它给删除了,否则一定贴上来让大家瞧瞧
Frank.WU 2005-09-06
  • 打赏
  • 举报
回复
麻煩,有點小體大做了吧?XP系統不是已經自動判斷的了?何況,你先要從路徑裡面提取文件名,再判斷是否是正確的文件名字?
請判斷:
D:\123\456\789\6.opq
裡面的789\6.opq是非法的文件名,你怎麼知道789\是不是路徑?
gamaster 2005-09-06
  • 打赏
  • 举报
回复
又有人低估我的智商了...
herman~~ 2005-09-05
  • 打赏
  • 举报
回复
这个不用try,我还真想不出其它什么方法
只能帮顶了

gamaster 2005-09-05
  • 打赏
  • 举报
回复
好歹我也5个三角形,我至于不知道 FileExists吗???
我不是判断文件存在与否,而是文件名称的有效性!
例如:a*b.txt是无效文件名,我试过查找是否含有\/:*?"<>|字符,但是有的乱码一样的字符虽然不含有上述字符,但仍然是非法不能作为文件名。
hellolongbin 2005-09-05
  • 打赏
  • 举报
回复
FileExists
g961681 2005-09-05
  • 打赏
  • 举报
回复
等正解!
senfore 2005-09-05
  • 打赏
  • 举报
回复
上面只是验证文件名,不验证路径。。路径验证直接使用FileExists就可以了。。FileExists可以验证文件是否存在,也可以验证路径是否存在。。
senfore 2005-09-05
  • 打赏
  • 举报
回复
我给你写一个

function isValidFileName(Afile:String):boolean;
var
i:integer;
begin
Result:=false;
if Afile<>'' then
begin
Result:=true;
for i:=1 to length(Afile) do
if (Afile[i] in ['/','\','<','>','|',':','?','*','"']) then
begin
Result:=false;
break;
end;
end;
end;

gxgyj 2005-09-04
  • 打赏
  • 举报
回复
if FileExists('c:\a.txt') then ShowMessage('存在')
else ShowMessage('不存在');

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧