Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.28;
Скачать: CL | DM;

Вниз

Проверка правильности имени файла   Найти похожие ветки 

 
HalloWin   (2003-04-17 12:57) [0]

Есть переменная типа string с введенным именем файла. Как проверить правильность (допустимость) этого имени фала?


 
Zergling   (2003-04-17 13:10) [1]

Возможно не самый лучший вариант, но...

Function TestFileName(FileName:String):Boolean;
var I:Word;
Begin
i:=0;
Result:=False;
if FileName="" then Exit;
while i<Length(FileName) do
Begin
Inc(I);
Case FileName[I] of
"\","/",":","*","?",""","<",">","|":
Begin
Result:=False;
Exit;
End;
End;
End;
Result:=True;
End;

Function TestFullFileName(FileName:String):Boolean;
var I:Word;
S:String;
Begin
i:=0;
Result:=False;
if FileName="" then Exit;
if not (FileName[1] in ["A".."Z"]) and
not (FileName[1] in ["a".."z"]) then Exit;
if FileName[3]<>"\" then Exit;

while i<Length(FileName) do
Begin
Inc(I);
Case FileName[I] of
"/","*","?",""","<",">","|":
Begin
Result:=False;
Exit;
End;
":": if I<>2 then
Begin
Result:=False;
Exit;
End;
"\": if (I<=2) and (s="\") then s:=FileName[I] else
Begin
if s<>"\" then s:=FileName[I] else
Begin
Result:=False;
Exit;
End;
End;
else s:=FileName[I];
End;
End;
Result:=True;
End;


 
HalloWin   (2003-04-17 13:33) [2]

Спасибо, попробую. А нет-ли каких-то функций WinAPI? А то, например, вводят мне имя файла " . ", или какое-то еще, и выдается ошибка.


 
Skier ©   (2003-04-17 13:41) [3]

>HalloWin
Если вводяться имена файлов и подразумевается что они
должны быть на диске то посмотри ф-цию FileExists(...)


 
Shirson ©   (2003-04-17 14:30) [4]

>HalloWin

Кто лучше самой системы знает, правильное это имя файла или нет?
Поэтому в блоке try...except просто попытайся создать этот файл (лучше во временной директории). Если полезет except - неверное имя файла. Если система схавает - верное :) И совместимость правильная :)


 
Anatoly Podgoretsky ©   (2003-04-17 14:37) [5]

HalloWin (17.04.03 13:33)
Нет поскольку у разных файловых систем свое представление о том, что такое правильное имя, а виндоус работает с устанавливаемыми файловыми системами. То что может храниться на одном диске совсем не обязательно перепишется на другой, я часто сталкиваюсь с подобной проблемой.
А тебе зачем проверять, для того что бы записать на диск, так и запиши и обработай ошибку.



Страницы: 1 вся ветка

Текущий архив: 2003.04.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-91317
temp
2003-04-15 14:19
2003.04.28
Почему ошибка обращения к WebModule?


4-91590
Nimda2000
2003-03-02 15:49
2003.04.28
Кодировка


14-91506
Mike Kouzmine
2003-04-10 11:45
2003.04.28
Можно ли по документу определить принтер


3-91187
Бульбаш
2003-04-09 11:45
2003.04.28
Как в ComboBox загрузить данные из базы


8-91409
stim24
2003-01-24 11:14
2003.04.28
Проблема или ГЛЮК DELPHIX