Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2011, 01:33   #1
pavellyba
Пользователь
 
Регистрация: 01.12.2010
Сообщений: 84
Вопрос Получение списка файлов и папок

Мне требуется узнать список файлов и папок в папке и загнать эти названия в массив.
pavellyba вне форума Ответить с цитированием
Старый 28.03.2011, 01:51   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Читаем про TSearchRec FindFirst FindNext FindClose и используем их...
Человек_Борща вне форума Ответить с цитированием
Старый 28.03.2011, 01:59   #3
Lem-ON
Пользователь
 
Аватар для Lem-ON
 
Регистрация: 18.05.2010
Сообщений: 10
По умолчанию

Есть отличная функция для нахождения файлов:

Код:
function GetFiles(Path:String; Full: Boolean = False):TStrings;
   Var
   Rec:TSearchRec;
   TMP:TStrings;
   ls: String;
   i: integer;
begin
  Result:=TStringList.Create;
  if Path[Length(Path)]<>'\' Then Path:=Path+'\';
  //ChDir(Path);
  if FindFirst(Path+'\*.*',faAnyFile,Rec)=0 then
    begin
     if (Rec.Name<>'.')and(Rec.Name<>'..') then
       if (Rec.Attr and faDirectory) <> 0 then begin
       TMP:=GetFiles(Path+Rec.Name,True);
       Result.AddStrings(TMP);
       TMP.Free;
       end else Result.Add(Path+Rec.Name);

     while FindNext(Rec)=0 do
       begin
        if (Rec.Name<>'.')and(Rec.Name<>'..') then
         if (Rec.Attr and faDirectory) <> 0 then begin
         TMP:=GetFiles(Path+Rec.Name,True);
         Result.AddStrings(TMP);
         TMP.Free;
         end else Result.Add(Path+Rec.Name);
       end;
   end;
if not Full then
  for i:=0 to Result.Count-1 do
   begin
     ls := Result[i];
     Delete(ls,1,Length(Path));
     Result[i] := ls;
   end;
  FindClose(Rec);
end;
А потом можно записать их в листобокс:

Код:
 Listbox1.Items.Assign(getfiles('директория'));
  ListBox1.ItemIndex := 0;
а дальше вывести в массив :

Код:
n:=listbox1.Items.Count-1;
  for i:=0 to n do
  A[i]:=Listbox1.Items[i]; \\ при условии что массив начинается с нуля;

Последний раз редактировалось Lem-ON; 28.03.2011 в 02:14.
Lem-ON вне форума Ответить с цитированием
Старый 28.03.2011, 03:39   #4
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Код:
type DynamicArray = array of string;

procedure GetFiles(var mOut : DynamicArray; Path:String);
Var Rec:TSearchRec;
    ls: String;
    i,n: integer;
begin
     n:=0;
     if Path[Length(Path)]<>'\' Then Path:=Path+'\';
     if FindFirst(Path+'*.*',faAnyFile,Rec)=0 then
     begin
          if (Rec.Name<>'.')and(Rec.Name<>'..') then
          begin
               inc(n);
               SetLength(mOut,n);
               mOut[n-1]:=Rec.Name;
          end;
          while FindNext(Rec)=0 do
          begin
               if (Rec.Name<>'.')and(Rec.Name<>'..') then
               begin
                    inc(n);
                    SetLength(mOut,n);
                    mOut[n-1]:=Rec.Name;
               end;
          end;
     end;
     FindClose(Rec);
end;

// use
procedure TForm1.Button1Click(Sender: TObject);
var mas : DynamicArray;
    i : integer;
begin
     Memo1.Clear;
     GetFiles(mas, 'c:\путь');
     for i:=0 to High(mas) do
     Memo1.Lines.Add(mas[i]);
end;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 30.03.2011, 22:55   #5
pavellyba
Пользователь
 
Регистрация: 01.12.2010
Сообщений: 84
По умолчанию

СпС разобрался=)
Человек_Борща, спасибо огромное что дали операторы, я смог разобраться хоть, что к чему=)
pavellyba вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение списка процеcсов legendary Win Api 12 02.09.2010 18:06
Получение списка файлов кроссплатформа kin63camapa Общие вопросы C/C++ 2 13.02.2010 00:24
получения списка папок sqqa Общие вопросы Delphi 1 17.01.2010 20:54
Получение списка файлов Костян Пират Общие вопросы Delphi 11 16.02.2009 09:58
получение 1 списка из 2-х Neznau Помощь студентам 0 10.12.2008 22:16