Текущий архив: 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.48 MB
Время: 0.006 c