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

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

Маска файла *.* и файл без расширения [Delphi, Windows]


Serg777 ©   (2005-08-06 12:39:00) 

StrSatisfy('123.exe','*.*') -> true
StrSatisfy('123'    ,'*.*') -> false
Я сканирую каталог в котором есть файлы без расширения и функция их не пропускает, а мне надо все файлы.
Без этой Функции я не могу, т.к. маска может быть разной.


GMax   (2005-08-17 20:20:00) [1]

... и, кстати, "*" означало файл без расширения (с пустым расширением)


GMax   (2005-08-17 00:10:00) [2]

во времена 8.3 не было имён файлов без расширения, были с пустым расширением ххх., поэтому маска *.* была вполне легитимна.


Serg777   (2005-08-11 21:55:00) [3]

Я не хочу список файлов.
Я хочу при сканировании сразу что-нибудь делать с текущий файлом, не сохраняя его путь и имя.
А NewDirList может сканировать рекурсивно?


<Falcon>   (2005-08-08 10:16:00) [4]

Не пойму что за сложности? Зачем вообще StrSatisfy?
Почему не использовать DirList?
DirList:=NewDirList(OpenDirDialog1.Path, EditBox1.Text,FILE_ATTRIBUTE_NORMAL);
DirList.ScanDirectory(OpenDirDialog1.Path, EditBox1.Text,FILE_ATTRIBUTE_NORMAL);
и т.д.
Например так. Выбирай каталог, вводи в эдит свою маску и получай список фалов.
Если просто в нужно список вывести то вообще можно воспользоваться функциями комбобокса или мемо...
Или я чего-то не понял в вопросе?


Serg777   (2005-08-06 17:51:00) [5]

А сейчас, что их нет? Просто они могут быть и больше 3 символов.  

Предложенный пример *2?* пометить не только типа 123.exe, а также 123456.exe , 123456, 456123456 (а надо 4561 25.7657867)

*2?. пометить файлы у которых есть точка на конце.

Этот один недочет усложняет всю работу с масками как это принято в файловых менеджерах.


Anatoly Podgoretsky   (2005-08-06 17:41:00) [6]

По привычке, когда то были расширения, это когда имена были 8.3


Serg777   (2005-08-06 17:36:00) [7]

ТОгда объясните почему принято помечать все файлы маской '*.*'


Anatoly Podgoretsky   (2005-08-06 17:27:00) [8]

Serg777   (06.08.05 16:33) [4]
Ты неправильно подразумеваешь, не без расширения, а обязательно с ним, но с любым расширением. Надо любые, то маска должна быть *2?*' или возаожно *2?.'


Serg777   (2005-08-06 16:33:00) [9]

Я так понимаю, что функция была создана в основном для работы с файлами. Например если пользователь введет '*.*', то в программе я это могу заменить на '*'.
Но если он введет маску '*2?.*' (я так понимаю, что он имеет ввиду файлы с любым расширением, в том числе и без него), то функция выдаст false на файлах без расширения.
Кстати в Total Commander эта маска отмечает файлы и без расширения.
Можно конечно проверять каждый файл и если он без расширения, то добавлять точку. Но не хочется это делать.


Anatoly Podgoretsky   (2005-08-06 15:28:00) [10]

Так ты же явно указал точку в маске.


Anatoly Podgoretsky   (2005-08-06 15:28:00) [11]

И на всякий случай в Виндоус нет расширени, это чистая условность.


Ajax   (2005-08-06 15:04:00) [12]

Может я не понял, но где в '123' точка, которая стоит в '*.*'? Попробуй просто задать маску '*'.

PS: функцию не знаю, ответил из общих соображений, если глупость, извиняюсь.


Наверх

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