|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Работа с файлами в одном каталоге
Как организовать работу с файлами в одном каталоге, чтобы программа производила операции с каждым файлом по очереди? Файлов множество и единственное, что их объединяет - это формат (jpeg). Думал в этом помогают Findfirst и FindNext, но, как я понял, они дают только имя найденного файла а не весь путь к нему. Вручную же дописывать имя файла к каталогу считаю некрасивым
|
#2
|
||||
|
||||
Код:
type TForm1 = class(TForm) ListBox1: TListBox; procedure FormCreate(Sender: TObject); ... procedure TForm1.FormCreate(Sender: TObject); begin SetCurrentDir('c:\Windows\System32\'); SendMessage(ListBox1.Handle, LB_DIR, $3f, Integer(PChar('*.dll'))); end; Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
tinky (21.05.2012)
|
#3
|
|||
|
|||
данный метод не подходит, потому что в конечном итоге мы получаем список файлов. Можно конечно извратиться и приплюсовывать каждый раз в цикле строчку из листбокса к конечной директории, но по отношению к листбоксу это как то не гуманно
|
#4
|
||||
|
||||
Вариант:
Код:
function FindFiles(const Path : String) : Integer; var S : TSearchRec; Res : Integer; begin Result := 0; Res := FindFirst(Path + '\*.mp3', faAnyFile - faVolumeID, S); while Res = 0 do begin with S do if (Name <> '.') and (Name <> '..') then begin ListBox1.Items.Add(Path + '\'+ Name); inc(Result); end; Res := FindNext(S); end; FindClose(S); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
tinky (21.05.2012)
|
#5
|
|||
|
|||
Спасибо, проблема решена с помощью все тех же FindFirst и FindNext
|
#6
|
|||
|
|||
Да да!! Именно
|
#7
|
||||
|
||||
2 строчки кода:
Код:
procedure RussiaWorldChamp(AListBox: TListBox; APath: String; AMask: String); var i: Integer; begin SendMessage(AListBox.Handle, LB_DIR, $3f, Integer(PChar(APath+AMask))); for i:=0 to AListBox.Count-1 do AListBox.Items[i]:=APath+AListBox.Items[i]; end; использование: Код:
RussiaWorldChamp(ListBox1, 'c:\Windows\System32\', '*.dll'); Пишу программы за еду. __________________ |
#8
|
||||
|
||||
Скорее всего, ТС это не подойдёт. Я использовал ListBox всего лишь как пример, а ему похоже нужно другое.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |