![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |
| Этот пользователь сказал Спасибо 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 всего лишь как пример, а ему похоже нужно другое.
|