A
aKnightChen
Unregistered / Unconfirmed
GUEST, unregistred user!
function fIsValidFileName(sFileName:string):Boolean;
var
i:Integer;
const
S_RESERVE_FILE_NAME:array[0..21] of string=(
'CON',
'AUX',
'COM1',
'COM2',
'COM3',
'COM4',
'COM5',
'COM6',
'COM7',
'COM8',
'COM9',
'LPT1',
'LPT2',
'LPT3',
'LPT4',
'LPT5',
'LPT6',
'LPT7',
'LPT8',
'LPT9',
'PRN',
'NUL');
begin
{
文件名必须遵循操作系统约定。在 Microsoft Windows 中,可使用以下的约定:
1、文件或目录名称可以有两部分:文件名和任选性的扩展名。两部分以圆点隔开,例如,myfile.new。
2、文件名可达 255 字符。实际上(win2000测试)文件的最大长度为216(218删除时出错),目录为206
3、文件名必须以字母或数字开头。它可以包含大小写字符(文件名不分大小写),但以下的字符除外:双引号(")、撇号(') 、斜杠(/)、反斜杠(/)、冒号)、垂直条(|)。
4、文件名可以包含空格。
5、以下的名称将保留,且不能用在文件或目录上:CON、AUX、COM1、COM2、COM3、COM4、LPT1、LPT2、LPT3、PRN、NUL。也不能用使用以上名称+"."作为文件名的开头部分,如“CON.ABC.TXT”是不允许的。
}
Result:=False;
sFileName:=UpperCase(Trim(sFileName));
if sFileName='' then Exit;
if sFileName='.' then Exit;
if sFileName='..' then Exit;
if Length(sFileName)>200 then Exit;
for i:=Low(S_RESERVE_FILE_NAME) to High(S_RESERVE_FILE_NAME) do
begin
if sFileName=S_RESERVE_FILE_NAME then Exit;
if Copy(sFileName,1,Length(S_RESERVE_FILE_NAME+'.'))=S_RESERVE_FILE_NAME+'.' then Exit;
end;
for i:=1 to Length(sFileName) do
if sFileName in ['<','>','?','/','/',':','*','|','"'] then Exit;
Result:=True;
end;
var
i:Integer;
const
S_RESERVE_FILE_NAME:array[0..21] of string=(
'CON',
'AUX',
'COM1',
'COM2',
'COM3',
'COM4',
'COM5',
'COM6',
'COM7',
'COM8',
'COM9',
'LPT1',
'LPT2',
'LPT3',
'LPT4',
'LPT5',
'LPT6',
'LPT7',
'LPT8',
'LPT9',
'PRN',
'NUL');
begin
{
文件名必须遵循操作系统约定。在 Microsoft Windows 中,可使用以下的约定:
1、文件或目录名称可以有两部分:文件名和任选性的扩展名。两部分以圆点隔开,例如,myfile.new。
2、文件名可达 255 字符。实际上(win2000测试)文件的最大长度为216(218删除时出错),目录为206
3、文件名必须以字母或数字开头。它可以包含大小写字符(文件名不分大小写),但以下的字符除外:双引号(")、撇号(') 、斜杠(/)、反斜杠(/)、冒号)、垂直条(|)。
4、文件名可以包含空格。
5、以下的名称将保留,且不能用在文件或目录上:CON、AUX、COM1、COM2、COM3、COM4、LPT1、LPT2、LPT3、PRN、NUL。也不能用使用以上名称+"."作为文件名的开头部分,如“CON.ABC.TXT”是不允许的。
}
Result:=False;
sFileName:=UpperCase(Trim(sFileName));
if sFileName='' then Exit;
if sFileName='.' then Exit;
if sFileName='..' then Exit;
if Length(sFileName)>200 then Exit;
for i:=Low(S_RESERVE_FILE_NAME) to High(S_RESERVE_FILE_NAME) do
begin
if sFileName=S_RESERVE_FILE_NAME then Exit;
if Copy(sFileName,1,Length(S_RESERVE_FILE_NAME+'.'))=S_RESERVE_FILE_NAME+'.' then Exit;
end;
for i:=1 to Length(sFileName) do
if sFileName in ['<','>','?','/','/',':','*','|','"'] then Exit;
Result:=True;
end;