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

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

Маска папки [D5]


Страницы:   1 2 3

R ©   (2004-07-28 08:12:00) 

Если производить поиск файлов то тут все понятно,
для индентификации соответствия имени файла указанной
маске сообразуясь с правилами(*,? ...) можно использовать функцию MatchesMask или IsWild(RxLib)...,
но как быть с папками, какую функцию можно использовать?


ЮрийК   (2004-07-29 17:04:00) [21]

Маски "*.*" и "*" одно и то же при поиске файлов/папок?
Или всё же результаты поиска будут различаться?


Fay   (2004-07-29 16:56:00) [22]

2olookin ©   (28.07.04 20:53) [5]
Ты можешь привести документ, регламентирующий порядок нахождения файлов с помощью FindFirst/FindNext?


Anatoly Podgoretsky   (2004-07-29 10:08:00) [23]

FindFirst(Path+'\*.*',faAnyFile,SearchRec);
while FindNext(SearchRec)=0 do begin


olookin   (2004-07-29 03:26:00) [24]

[20] Anatoly Podgoretsky ©   (28.07.04 22:46)

Сомневаюсь ибо проверил - ничего не потеряно


Anatoly Podgoretsky   (2004-07-28 22:46:00) [25]

olookin ©   (28.07.04 22:08) [18]
Модешь не сомневаться, один файл у тебя потерян


olookin   (2004-07-28 22:09:00) [26]

До кучи. Учитывай, что символ _ считается поздним по отношению к альфанумерикальным... Я тоже сначала посчитал что ты прав - но потом посчитал уже просто число найденных файлов - соответствует реалиям...


olookin   (2004-07-28 22:08:00) [27]

[10] Fay ©   (28.07.04 21:17)
Первый найденый файл/каталог ты игнорируешь. А вв остальной шаманский код я вАщЕ не въехал - не каждый день так везёт.

Так что батенька - прежде чем критиковать - надо пробовать пробовать и еще раз пробовать... Ведь невозможна ситуация, когда у меня все ОК, а у тебя все NotOk...


olookin   (2004-07-28 22:04:00) [28]

[16] Fay ©   (28.07.04 22:03)

Мне кажется ты просто разглагольствуешь. Проверил специально сам - никаких пропусков. Вывод: или я малые детали упускаю, или ты - гонщик...


Fay   (2004-07-28 22:03:00) [29]

Иди спать. Завтра перечитай. Не думаю, что человек, для которого проявление такой тупизны является нормой, смог бы сам завести анкету на форуме. Мне кажется, ты просто устал.
Или я... 8)
Спокойной ночи.


olookin   (2004-07-28 21:57:00) [30]

[12] Fay ©   (28.07.04 21:36)
2olookin ©   (28.07.04 21:25) [11]

Ну и ?


Fay   (2004-07-28 21:40:00) [31]

Так, Отцы проснулись... 8)


Юрий Зотов   (2004-07-28 21:38:00) [32]

> R ©   (28.07.04 13:51) [3]

> Приведите пример не функции поиска, а именно определения
> соответствия масски введенной пользователем имени папки.

Пожалуйста - MatchesMask. Вы просто не очень внимательно посмотрели справку - а там внизу есть приписка:

Note: The Filename parameter does not need to be a file name. MatchesMask can be used to check strings against any syntactically correct mask.

Это означает, что MatchesMask просто проверяет строку на соответствие маске. И эта строка совершенно не обязана быть именем реального файла или папки.

Только все это это не обязательно. Маску поиска можно задавать прямо в FindFirst.


Fay   (2004-07-28 21:36:00) [33]

2olookin ©   (28.07.04 21:25) [11]


> Ты перво-наперво попробуй код - а потом говори

Вот и я так думаю...

{$DEFINE FAY_RULEZ}

procedure FYVM2;
var
 SearchRec : TSearchRec;
begin
{$IFNDEF FAY_RULEZ}
 FindFirst('c:\?rog*', faAnyFile, SearchRec);
 while FindNext(SearchRec) = 0 do
   begin
     ShowMessage(SearchRec.Name);
   end;
 FindClose(SearchRec);
{$ELSE}

 FindFirst('c:\?rog*', faAnyFile, SearchRec);
 repeat
   ShowMessage(SearchRec.Name);
 until FindNext(SearchRec) <> 0;
 FindClose(SearchRec);
{$ENDIF}
end;


olookin   (2004-07-28 21:25:00) [34]

[10] Fay ©   (28.07.04 21:17)
Ты перво-наперво попробуй код - а потом говори


Fay   (2004-07-28 21:17:00) [35]

Первый найденый файл/каталог ты игнорируешь. А вв остальной шаманский код я вАщЕ не въехал - не каждый день так везёт.


olookin   (2004-07-28 21:12:00) [36]

[8] Fay ©   (28.07.04 21:06)

Так ты поясни что-ли


Fay   (2004-07-28 21:06:00) [37]

2olookin ©   (28.07.04 21:00) [7]
Да хотя бы это

>  FindFirst(Path+'\*.*',faAnyFile,SearchRec);
>  while FindNext(SearchRec)=0 do begin


olookin   (2004-07-28 21:00:00) [38]

[6] Fay ©   (28.07.04 20:57)

А что именно?


Fay   (2004-07-28 20:57:00) [39]

2olookin ©   (28.07.04 20:53) [5]
Ужасно.


olookin   (2004-07-28 20:53:00) [40]

Ту же самую, но папка имеет идентификатор '*' или '*.'

Вот пример

procedure TForm1.Scan(Path: Ansistring);
var SearchRec: TSearchRec;
   s: string;
   r,a: Ansistring;
begin
 FindFirst(Path+'\*.*',faAnyFile,SearchRec);
 while FindNext(SearchRec)=0 do begin
 s:='*'+LowerCase(ExtractFileExt(Path+'\'+SearchRec.Name));
 if (s<>'*') and (s<>'*.') and (s='*.mp3') then begin
 r:=ExtractFilePath(Path+'\'+SearchRec.Name);
 a:=ExtractFileName(Path+'\'+SearchRec.Name);
 a:=StringReplace(a,' ','_',[rfReplaceAll]);
 RenameFile(Path+'\'+SearchRec.Name,r+a); end;
 if (SearchRec.Attr and faDirectory=faDirectory) and
 (SearchRec.Name[1]<>'.') then Scan(Path+'\'+SearchRec.Name); end;
 FindClose(SearchRec);
end;


Страницы:   1 2 3

Наверх

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