Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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


Ответ
 
Опции темы
Старый 27.07.2008, 14:29   #1
sergey31
Пользователь
 
Аватар для sergey31
 
Регистрация: 27.04.2008
Сообщений: 24
Вопрос Показ всех имен файлов в каталоге[Delphi]

Добрый день всем!
Возник такой вопрос, как можно получить названия всех имен файлов в каталоге, для записи их в текстовый файл.
Если кто работал с командной строкой Linux, тогда то что я прошу будет аналогом команды
Код:
$ ls каталог1/каталог2 > список.txt
(может так понятнее объяснил)
sergey31 вне форума Ответить с цитированием
Старый 27.07.2008, 15:23   #2
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
По умолчанию

Используйте FindFirst, FindNext и SetCurrentDir.
Или вот, как-то писал файловый менеджер:
Код:
type
  Ttext = array[0..500] of string;

...

uses
  SysUtils,ShellAPI;

...

Function GetSp(dir,name:string; folder,hidesys:boolean):Ttext;
var
	kol,typ:integer;
	files:Ttext;
  searchResult:TSearchRec;
Begin
	kol := 1;
  SetCurrentDir(dir);
  If folder = True then // Нахождение папок
    if hidesys=true then begin //всех
      if FindFirst('*', faDirectory+faSysFile+faHidden, searchResult) = 0 then if (searchResult.attr and faDirectory) = faDirectory then begin
        files[kol] := searchResult.Name;
        If (files[kol]<>'.')and(files[kol]<>'..') then kol := kol + 1;
      end;
      while  FindNext(searchResult) = 0 do if (searchResult.attr and faDirectory) = faDirectory then begin
        files[kol] := searchResult.Name;
        If (files[kol]<>'.')and(files[kol]<>'..') then kol := kol + 1;
      end
    end
    else begin //нормальных
      if FindFirst('*', faDirectory, searchResult) = 0 then if (searchResult.attr and faDirectory) = faDirectory then begin
        files[kol] := searchResult.Name;
        If (files[kol]<>'.')and(files[kol]<>'..') then kol := kol + 1;
      end;
      while  FindNext(searchResult) = 0 do if (searchResult.attr and faDirectory) = faDirectory then if (searchResult.attr and faDirectory) = faDirectory then begin
        files[kol] := searchResult.Name;
        If (files[kol]<>'.')and(files[kol]<>'..') then kol := kol + 1;
      end;
    end
  else // нахождение файлов
    if hidesys=true then begin //всех
      if FindFirst('*', faAnyFile, searchResult) = 0 then if (searchResult.attr and faDirectory) <> faDirectory then begin
        files[kol] := searchResult.Name;
        kol := kol + 1;
      end;
      while  FindNext(searchResult) = 0 do if (searchResult.attr and faDirectory) <> faDirectory then begin
        files[kol] := searchResult.Name;
        kol := kol + 1;
      end;
    end else begin //нормальных
      if FindFirst('*', faAnyFile, searchResult) = 0 then if ((searchResult.attr and faHidden) <>faHidden)and((searchResult.attr and faSysFile) <>faSysFile)and((searchResult.attr and faDirectory) <> faDirectory) then begin
        files[kol] := searchResult.Name;
        kol := kol + 1;
      end;
      while  FindNext(searchResult) = 0 do if ((searchResult.attr and faHidden) <>faHidden)and((searchResult.attr and faSysFile) <>faSysFile)and((searchResult.attr and faDirectory) <> faDirectory) then begin
        files[kol] := searchResult.Name;
        kol := kol + 1;
      end;
    end;
  files[0] := IntToStr(kol-1);
  GetSp := files;
  FindClose(searchResult);
end;
Входные параметры: folder - если true, то ещит папки, false - файлы, hidesys - показывать все или только не скрытые, не системные. dir - думаю понятно, а name уже не помню вроде не используется, указывайте ''
На выходе массив из стрингов, [0] - количество файлов? остальное - имена.
Kn793 вне форума Ответить с цитированием
Старый 27.07.2008, 15:43   #3
sergey31
Пользователь
 
Аватар для sergey31
 
Регистрация: 27.04.2008
Сообщений: 24
По умолчанию

Kn793 - Большое спасибо, выручили.
Тему можно закрывать.
sergey31 вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить имена всех файлов, которые были открыты с помощью приложения Kn793 Общие вопросы Delphi 9 10.07.2008 14:31
список всех открытых файлов и папок. Teleport Общие вопросы Delphi 4 22.06.2008 10:29
как посчитать количество файлов в каталоге? помогите плиз older Общие вопросы Delphi 5 23.05.2008 13:22
Показ картинок, как реализовать. Zeraim Мультимедиа в Delphi 18 21.05.2008 08:29
организация простенькой парольной защиты .exe файлов в конкретном каталоге abyss Помощь студентам 2 13.11.2007 08:24


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS