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

Вниз

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

 
MegaVolt   (2002-11-13 16:38) [0]

Есть поле например TEdit в него вводится имя файла (без полного пути. Путь хранится в другом месте). Как мне проверить корректность введённого пользователем имени? Мне приходит в голову только сделать файл на диске и посмотреть будет ошибка или нет но по моему это очень некрасиво :( Как проверить корректность имени файла без обращения к винту?

Заранее благодарен


 
Jeer ©   (2002-11-13 16:46) [1]

Наверно надо знать допустимые символы:))


 
Андрей Прокофьев ©   (2002-11-13 16:47) [2]

2 MegaVolt
>> только сделать файл на диске и посмотреть будет ошибка или нет
1 Это все равно придется делать
2 Еще проверить, а не существует ли уже такой файл и что тогда с ним делать


 
F1 ©   (2002-11-13 16:48) [3]

Или недопустимые :) их ведь меньше :)


 
MegaVolt   (2002-11-13 16:50) [4]

Ну узнать то их не сложно но поидее должна быть просто какаято функция позволяющая просто проверить хороший не хороший. А писать самому проверку наличия этих символов в строке конечно можно но как то некрасиво :(


 
F1 ©   (2002-11-13 16:54) [5]

MegaVolt (13.11.02 16:50)
Ну почему же некрасиво?

Ну а SaveDialog на что???
Он ведь все проверяет, и юзеру удобнее.


 
MegaVolt   (2002-11-13 16:59) [6]

Я использовал TFileEdit из RX так во там есть возможность ввода юзверем имени файла самостоятельно и нехотелось бы это урезать.


 
F1 ©   (2002-11-13 17:00) [7]

Ну тогда делай "некрасиво".


 
SaS13 ©   (2002-11-13 17:01) [8]

ValidFileName из FileUtil.pas (RX)


 
MegaVolt   (2002-11-13 17:22) [9]

то что доктор прописал :)


 
ctapik-net ©   (2002-11-13 18:36) [10]

А можно RX и не использовать

function RightFileName(const FileName:string): boolean;
const
CHARS : array[1..10] of char =
("\", "/", ":", "*", ".", "?", """, "<", ">", "|");
var
I : integer;
begin
for I:=1 to 10 do
if pos(CHARS[I],FileName)<>0 then //Найден запрещённый символ
begin
Result:=false;
Exit;
end;
Result:=true;
end;


Пример использования:
procedure TForm1.Button1Click(Sender: TObject);
var
F:TextFile;
begin
if RightFileName(Edit1.Text) then
begin
AssignFile(F,Edit1.Text);
Rewrite(F);
CloseFile(F);
end
else
ShowMessage(
"Нельзя использовать символы \ / : * . ? " < > | в имени файла");
end;


 
Kibitzer ©   (2002-11-14 23:01) [11]


> ctapik-net © (13.11.02 18:36)
> А можно RX и не использовать

А если в Edit1.Text будет например con.txt ? :-)


 
Jeer ©   (2002-11-14 23:40) [12]

Kibitzer © (14.11.02 23:01)

Это уже высшая математика:))
проверка на допустимые/недопустимые слова.
Зачем чела расстраивать:))


 
Kibitzer ©   (2002-11-14 23:56) [13]


> Jeer © (14.11.02 23:40)
> Kibitzer © (14.11.02 23:01)
>
> Это уже высшая математика:))
> проверка на допустимые/недопустимые слова.
> Зачем чела расстраивать:))

:))


 
Юрий Зотов ©   (2002-11-15 08:32) [14]

В стандарте (и в справке) Delphi есть MatchesMask.


 
RV ©   (2002-11-15 09:02) [15]

Андрей Прокофьев © (13.11.02 16:47)
2 MegaVolt
>> только сделать файл на диске и посмотреть будет ошибка или нет
1 Это все равно придется делать
2 Еще проверить, а не существует ли уже такой файл и что тогда с ним делать


 
MegaVolt   (2002-11-15 16:39) [16]

Про проверку наличия файла это понятно.
Если набрано con.txt то файл создаётся в папке проекта. А вот допустимо ли имя con ? хм...
У меня вначале идёт долгий прощёт (сканирование директории и содержимого) а только после этого и если процесс не прервали раньше он создаёт файл результата. Так вот получается что вначале я должен создать, убедится в отсутствии ошибок и после этого удалить чтобы потом при прерывании процеса не оставалось нулевых файлов.
Но мне почему то кажется что в виндах должна быть такая функция :(


 
MegaVolt   (2002-11-15 16:57) [17]

Кстати файл con.txt при попытке его ввести в OpenDialog выдаёт что это имя зарезервировано. Следовательно винда понимает что такие имена делатьт не нужно и как то это проверяет а значит есть такая функция.


 
vasya_dvc   (2002-11-15 22:00) [18]

IMHO, существует тип TFileName. Преобразуешь из string в него и смотришь - если ошибка, значит - имя файла написано не совсем так как надо ;)


 
TTCustomDelphiMaster ©   (2002-11-15 22:09) [19]


> vasya_dvc (15.11.02 22:00)

Ошибаетесь...


 
Севостьянов Игорь ©   (2002-11-18 10:38) [20]

Да еще не забыть о том, что в одной папке или в корне не может существовать папка и файл одинаковые по имени...



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

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

Наверх




Память: 0.51 MB
Время: 0.011 c
1-93131
MegaVolt
2002-11-13 16:38
2002.11.28
Как проверить корректность имени файла?


3-92853
Мазут Береговой
2002-11-13 00:35
2002.11.28
Вопрос по MS SQL для профессионалов!


14-93197
Undert
2002-11-06 21:49
2002.11.28
Нужен человек с Оперой, Гозилой и НН!!!


14-93189
Anatoly Podgoretsky
2002-11-09 12:50
2002.11.28
С днем рождения Вика


1-93102
nika_ufc
2002-11-16 17:32
2002.11.28
плохое объяснение и глюки в статье