![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверить корректность имени файла? [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]Наверно надо знать допустимые символы:))