Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.009 c
14-93249
AL2002
2002-11-07 12:12
2002.11.28
Есть у кого-то хоть один архив форумов за 2001 год?


1-93085
glina
2002-11-16 19:57
2002.11.28
Есть ли событие ухода указателя мыши с объекта?


1-93139
Live_Aus_Berlin
2002-11-18 11:17
2002.11.28
Есть прога, которая строит графики(без глюков)


7-93277
dens
2002-09-26 16:43
2002.11.28
Чтение данных из COM-порта


3-92917
Skolotovich
2002-11-11 15:58
2002.11.28
проблема с редактированием БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский