Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.05.2012, 16:08
tinky tinky вне форума
Прохожий
 
Регистрация: 08.04.2012
Сообщения: 11
Репутация: 10
Вопрос Работа с файлами в одном каталоге

Как организовать работу с файлами в одном каталоге, чтобы программа производила операции с каждым файлом по очереди? Файлов множество и единственное, что их объединяет - это формат (jpeg). Думал в этом помогают Findfirst и FindNext, но, как я понял, они дают только имя найденного файла а не весь путь к нему. Вручную же дописывать имя файла к каталогу считаю некрасивым
Ответить с цитированием
  #2  
Старый 20.05.2012, 16:29
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
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  
Старый 21.05.2012, 01:37
tinky tinky вне форума
Прохожий
 
Регистрация: 08.04.2012
Сообщения: 11
Репутация: 10
По умолчанию

данный метод не подходит, потому что в конечном итоге мы получаем список файлов. Можно конечно извратиться и приплюсовывать каждый раз в цикле строчку из листбокса к конечной директории, но по отношению к листбоксу это как то не гуманно
Ответить с цитированием
  #4  
Старый 21.05.2012, 01:47
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Вариант:
Код:
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  
Старый 21.05.2012, 02:18
tinky tinky вне форума
Прохожий
 
Регистрация: 08.04.2012
Сообщения: 11
Репутация: 10
По умолчанию

Спасибо, проблема решена с помощью все тех же FindFirst и FindNext
Ответить с цитированием
  #6  
Старый 21.05.2012, 02:19
tinky tinky вне форума
Прохожий
 
Регистрация: 08.04.2012
Сообщения: 11
Репутация: 10
По умолчанию

Да да!! Именно
Ответить с цитированием
  #7  
Старый 21.05.2012, 08:54
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость

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  
Старый 21.05.2012, 21:58
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Скорее всего, ТС это не подойдёт. Я использовал ListBox всего лишь как пример, а ему похоже нужно другое.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter