![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск файлов возвращает артефакты [D7, XP]
Sdubaruhnul © (2007-07-18 21:51:00)Для поиска файлов использую юникодные FindFirstFileW и ко. Ищу: "c:\test\*". Получаю такие результаты поиска:
.
..
folder1
folder2
hello5.txt
hello6.txt
Что бы это могло значить?
dima_bil (2007-07-26 17:56:00) [1]Эта процедура находит файлы, показывает имена, расширение, дату и время последнего изменения файла!
dima_bil (2007-07-26 17:54:00) [2]Использовать так:
только "*.kl" замени на "*.*". пользуйся так
dir2:='директория для поиска';
Getfiles(Dir2,reg,_type);
dima_bil (2007-07-26 17:51:00) [3]procedure GetFiles( APath: string );
var
sr: TSearchRec;
isFound: boolean;
ListItem: TListItem;
temp: string;
begin
isFound := FindFirst( APath + '*.kl', faAnyFile, sr ) = 0;
while isFound do
begin
if ( sr.Name <> '.' ) and ( sr.Name <> '..' ) and
( ( sr.Attr and faDirectory ) <> faDirectory ) then
begin
ListItem := Form1.ListView1.Items.Add;
temp := ExtractFileName( sr.Name );
if LastDelimiter( '.', temp ) <> 0 then
ListItem.Caption := Copy( temp, 0, LastDelimiter( '.', temp )-1 )
else
ListItem.Caption := temp;
temp := ExtractFileExt( sr.Name );
ListItem.SubItems.Add( 'файл' );
ListItem.SubItems.Add( DateToStr( FileDateToDateTime(
FileAge( APath + '\' + sr.Name ) ) ) );
ListItem.SubItems.Add( TimeToStr( FileDateToDateTime(
FileAge( APath + '\' + sr.Name ) ) ) );
end;
isFound := FindNext( sr ) = 0;
end;
FindClose( sr );
end;
hide (2007-07-26 11:58:00) [4]По логике да, но пока не сплюсовал все - скрытые не искались :)
Плохиш (2007-07-26 11:56:00) [5]
> hide (26.07.07 11:38) [17]
> Плохиш ©
> Так ищутся и без расширений.
Хм, действительно, когда-то столкнулся с этим, ладно [16] снимается.
> Только faAnyFile = скрытые не найдёт
Какое различие между передачей в качестве параметра $3f или $01+$02+$04+$08+$10+$20 ?
{RASkov} (2007-07-26 11:53:00) [6]> > findfirst('C:\*.*', faAnyFile, SR)
>
> Т.е. файлы без расширений не нужны?
> Так ищутся и без расширений.
Вообще-то наверное правильнее, если все подряд искать, то нужно просто * указывать..... ибо маска есть маска.... + "правильный" второй параметр...
hide (2007-07-26 11:38:00) [7]Плохиш ©
Так ищутся и без расширений. Только faAnyFile = скрытые не найдёт, что бы все искало нужно все эти fa~ сплюсовать.
Виндовый поиск ищет ещё и внутри архивов, я не сразу понял почему у него на тыщу файлов больше находится :)
Плохиш (2007-07-26 11:07:00) [8]
> findfirst('C:\ *.*', faAnyFile, SR)
Т.е. файлы без расширений не нужны?
{RASkov} (2007-07-25 22:09:00) [9]> [12] hide (25.07.07 21:19)
> "c:\.", "c:\..",
....а текущий и родительский каталоги в данной функции могут присутствовать вначале пути, но никак не в конце...
т.е.findfirst('.\*.*', faAnyFile, SR)илиfindfirst('..\*.*', faAnyFile, SR)
> Так, что ты тут зря со своими С:\ наезжаешь.....
Близко не принимай.... смайл забыл поставить.
Virgo_Style (2007-07-25 22:08:00) [10]hide (25.07.07 21:19) [12]
не верно и не спасибо.
Вай, спасибо отобрали... Извиняй, телепатор сломался, а без него понять твой вопрос затруднительно.
{RASkov} (2007-07-25 22:01:00) [11]> [12] hide (25.07.07 21:19)
> не находит "c:\",
Угу.... а так:
findfirst('C:\*.*', faAnyFile, SR)
?
Маску нужно указывать.... т.е. я хочу сказать, что
findfirst('C:\Windows', faAnyFile, SR)
найдет каталог Windows на диске С (если он там есть)
а так
findfirst('C:\Windows\', faAnyFile, SR)
нихрена ничего ненайдет :(.....
Так, что ты тут зря со своими С:\ наезжаешь.....
hide (2007-07-25 21:19:00) [12]Virgo_Style ©
не верно и не спасибо.
ищет и во всём диске, только есть особенности - не находит "c:\", "c:\.", "c:\..", а всё остальное содержимое находит.
hide (2007-07-25 19:53:00) [13]спасибо
Virgo_Style (2007-07-25 19:40:00) [14]hide (25.07.07 19:34) [9]
Чудес не бывает, ты должен организовать поиск в каждой из папок диска
hide (2007-07-25 19:34:00) [15]Cкажите, как искать во всём диске = c:\ используя findfirst/findnext?
В отдельных папках находит, а во всём диске не хочет находить.
даже c:\. и c:\.. пробовал - ничего не найдено, результат findfirst=2
Anatoly Podgoretsky (2007-07-19 01:07:00) [16]> Sdubaruhnul (19.07.2007 00:56:06) [6]
Надо не собираться, а игнорировать
Германн (2007-07-19 01:00:00) [17]
> Sdubaruhnul (19.07.07 00:56) [6]
>
> >ты главное когда будешь делать рекурсивное удаление файлов,
> не забудь про эти точки%)
>
> Не понял... Я их собирался игнорировать.
>
Значит забудь про обход вложенных папок.
Sdubaruhnul (2007-07-19 00:56:00) [18]> ты главное когда будешь делать рекурсивное удаление файлов, не забудь про эти точки%)
Не понял... Я их собирался игнорировать.
antonn (2007-07-19 00:43:00) [19]ты главное когда будешь делать рекурсивное удаление файлов, не забудь про эти точки%)
Sdubaruhnul (2007-07-19 00:24:00) [20]Короче, ясно что это (текущая и родительская папки).
По мне так это очередной бред, который нужно запомнить.