|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
||||
|
||||
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#17
|
||||
|
||||
Цитата:
|
#18
|
||||
|
||||
Или вот еще http://www.delphisources.ru/forum/sh...376#post116376, создавал подобную тему на форуме, добавляет в листбокс все файлы с папок и подпапок.
|
#19
|
||||
|
||||
Или ешё.
Код:
procedure FindFiles(const Path : String); var SR : TSearchRec; Ext : String; begin if FindFirst(ExpandFileName(Path + '\*.*'), faAnyFile, SR) = 0 then try repeat if ((SR.Attr and faDirectory) <> 0) and (SR.Name[1] <> '.') then FindFiles(ExpandFileName(Path + '\' + SR.Name)) else if (SR.Name[1] <> '.') then ListBox1.Items.Add(SR.Name); until FindNext(SR) <> 0; finally FindClose(SR); end; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#20
|
||||
|
||||
Цитата:
|
#21
|
||||
|
||||
Код:
procedure FindFiles(const Path : String); var SR : TSearchRec; Ext : String; begin if FindFirst(ExpandFileName(Path + '\*.*'), faAnyFile, SR) = 0 then try repeat if ((SR.Attr and faDirectory) <> 0) and (SR.Name[1] <> '.') then FindFiles(ExpandFileName(Path + '\' + SR.Name)) else if (SR.Name[1] <> '.') then ListBox1.Items.Add(SR.Name); until FindNext(SR) <> 0; finally FindClose(SR); end; end; возник вопрос, почему в этом коде при указании маски допустим *.txt не ищет файлы в подпапках? |
#22
|
||||
|
||||
Цитата:
Другими словами этот код с маской "*.txt" не увидит ни файлов ни папок у которых расширение не ".txt", а раз он не увидит папку, то и не войдёт в неё. |
#23
|
||||
|
||||
Значит все-таки есть костыль для *.*. Прикольно.
to ТС: Перебирать надо папки (с маской * и проверять атрибут faDirectory), а потом в папке отдельно запускать поиск *.txt. jmp $ ; Happy End! The Cake Is A Lie. |
#24
|
||||
|
||||
Цитата:
p.s. Ещё пример тяжкого наследия DOS-а - нельзя создать папку или файл например с таким именем: "con.txt" |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Alegun (27.11.2012)
|
#25
|
||||
|
||||
Оффтоп: Офигеть, и вправду нельзя такой файл создать, во приколка:-О!
Небольшой пример по поиску: http://www.delphisources.ru/forum/sh...ad.php?t=10003 Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#26
|
||||
|
||||
можно:
-создать папку temp. md \\?\d:\Downloads\temp. -создать файл con.txt type nul > \\?\d:\Downloads\con.txt Пишу программы за еду. __________________ |
#27
|
||||
|
||||
Помогите переписать этот код для поиска с маской в подпапках!
Код:
procedure FindFiles(const Path : String); var SR : TSearchRec; Ext : String; begin if FindFirst(ExpandFileName(Path + '\*.*'), faAnyFile, SR) = 0 then try repeat if ((SR.Attr and faDirectory) <> 0) and (SR.Name[1] <> '.') then FindFiles(ExpandFileName(Path + '\' + SR.Name)) else if (SR.Name[1] <> '.') then ListBox1.Items.Add(SR.Name); until FindNext(SR) <> 0; finally FindClose(SR); end; end; |
#28
|
||||
|
||||
Код:
procedure GetAllFiles(Path: string; ListBox: TListBox ); var sRec: TSearchRec; isFound: Boolean; begin Path := IncludeTrailingPathDelimiter(Path); isFound := FindFirst(Path + '\*.*', faAnyFile, sRec) = 0; while isFound do begin if (sRec.Name <> '.') and (sRec.Name <> '..') then begin if (sRec.Attr and faDirectory) = faDirectory then GetAllFiles(Path + sRec.Name, ListBox); if Pos('.mp3', Copy(sRec.Name, Length(sRec.Name)-3, 4)) = 1 then ListBox.Items.Add(Path + sRec.Name); if Pos('.AAC', Copy(sRec.Name, Length(sRec.Name)-3, 4)) = 1 then ListBox.Items.Add(Path + sRec.Name); end; Application.ProcessMessages; isFound := FindNext(sRec) = 0; end; FindClose(sRec); end; |
#29
|
||||
|
||||
Цитата:
Код:
procedure FindFiles(const Dir, Ext: string; ResultList: TStrings); procedure SubFind(const Path: string); var SR: TSearchRec; begin if FindFirst(Path + '*.*', faAnyFile, SR) = NO_ERROR then try repeat if (SR.Attr and faDirectory) = 0 then // File begin if AnsiSameText(Ext, ExtractFileExt(SR.Name)) then ResultList.Add(Path + SR.Name); end else // Dir begin if (SR.Name <> '.') and (SR.Name <> '..') then SubFind(Path + SR.Name + '\'); end; until FindNext(SR) <> NO_ERROR; finally FindClose(SR); end; end; begin SubFind(IncludeTrailingPathDelimiter(Dir)); end; Пример использования: Код:
procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.BeginUpdate; try FindFiles('C:\WINDOWS', '.exe', ListBox1.Items); finally ListBox1.Items.EndUpdate; end; end; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
MoS (09.12.2012)
|