Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как проверить корректность имени файла? [D5, Win95/98]


MegaVolt ©   (2002-11-13 16:38:00) 

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

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


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

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


TTCustomDelphiMaster   (2002-11-15 22:09:00) [2]


> vasya_dvc (15.11.02 22:00)

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


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

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


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

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


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

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


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

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


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

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


Kibitzer   (2002-11-14 23:56:00) [8]


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

:))


Jeer   (2002-11-14 23:40:00) [9]

Kibitzer © (14.11.02 23:01)

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


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


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

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


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

А можно 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;


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

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


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

ValidFileName из FileUtil.pas (RX)


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

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


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

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


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

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

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


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

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


F1   (2002-11-13 16:48:00) [18]

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


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

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


Jeer   (2002-11-13 16:46:00) [20]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо