Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 15.10.2011
Сообщений: 23
1

Поиск в Delphi. Написать программу для поиска всех файлов и каталогов, названия которых начинаются на заданную букву

15.01.2013, 12:00. Показов 1929. Ответов 2

Author24 — интернет-сервис помощи студентам
Поиск в Delphi. Написать программу для поиска всех файлов и каталогов, названия которых начинаются на заданную букву
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2013, 12:00
Ответы с готовыми решениями:

Установить заданную дату и час создания файлов корневого каталога, которые начинаются на заданную букву
Доброго времени суток, есть задание: установить заданную дату и час создания файлов корневого...

Сформировать массив из структур, в которых имена начинаются на заданную букву
Помогите, пожалуйста. Мне нужно найти имена, которые начинаются на А и сформировать из них массив ...

Распечатать список учеников фамилии которых начинаются на заданную букву
Распечатать список учеников , фамилии которых начинаются на букву В, с указанием даты их рождения

Вывести список автомобилистов, фамилии которых начинаются на заданную букву
Имеются исходные данные по владельцам автомобилей: ФИО № автомо-биля Марка авто-мобиля Дата...

2
202 / 168 / 11
Регистрация: 30.05.2012
Сообщений: 703
15.01.2013, 18:35 2
Алгоритм такой: рекурсивная функция, которая ищет файлы по маске Подстрока*.*, записывает их в ListBox, ищет все подпапки и вызывает сама себя уже для этой папки.
Будет время - выложу исходник.
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
17.01.2013, 10:08 3
Лучший ответ Сообщение было отмечено Airat007 как решение

Решение

На форму надо положить Button1 : TButton и Memo1 : TMemo. Для кнопки Button1 создать обработчик события OnClick и раздел implementation в модуле оформить так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
implementation
 
{$R *.dfm}
 
uses
  FileCtrl;
 
type
  TDCh = set of char;
 
var
  gPath : String = ''; //Начальный путь к папке.
 
//Рекурсивная процедура для поиска папок и файлов по заданной маске.
//Папки, которые не удовлетворяют условию поиска тоже выводятся в список,
//но заключаются в скобки. Это нужно для того, чтобы список отражал
//целостную древовидную структуру.
//aPath - начальная папка для поиска.
//aDCh - набор символов с которых должны начинаються имена искомых записей.
//aInd - отступ для показа древовидной структуры.
//aSl - список - потомок класса TStrings, в который добавляются найденные записи.
procedure GetFiles(const aPath : String; const aDCh : TDCh;
  const aInd : String; aSl : TStrings);
var
  Sr : TSearchRec;
  Attr : Integer;
  Path : String;
begin
  //Если завершающего слеша нет, то добавляем его.
  Path := IncludeTrailingPathDelimiter(aPath);
  //Все атрибуты файлов.
  Attr := faAnyFile;
  try
    if FindFirst(Path + '*', Attr, Sr) = 0 then
    repeat
      //Если найдена запись, соответствующая папке.
      if Sr.Attr and faDirectory = faDirectory then begin
        //Если запись не является ссылкой на текущую папку ".." или на
        //родительскую папку ".", то обрабатываем папку и выполняем для неё
        //рекурсивный вызов.
        if not ((Sr.Name = '.') or (Sr.Name = '..')) then begin
          //Папки с именами, удовлетворяющими маске.
          if Sr.Name[1] in aDCh then
            aSl.Add(aInd + Sr.Name + '\')
          //Папки с именами, НЕ удовлетворяющими маске, записываем в скобках.
          else
            aSl.Add(aInd + '( ' + Sr.Name + '\ )');
          //Рекурсивный вызов.
          GetFiles(Path + Sr.Name + '\', aDCh, aInd + '  ', aSl);
        end;
      //Если найдена запись, соответствующая файлу.
      end else if Sr.Name[1] in aDCh then
        aSl.Add(aInd + Sr.Name);
    until FindNext(Sr) <> 0;
  finally
    FindClose(Sr);
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  //Путь к папке, в которой нужно произвести поиск. Начальное значение выбираем
  //равным пути к той папке, в которой расположена наша программа.
  if gPath = '' then gPath := ExtractFilePath(ParamStr(0));
  //Диалог выбора папки.
  if not SelectDirectory('Выбор папки', '', gPath) then Exit;
  //Если конечный слеш отсутствует, то добавляем его.
  gPath := IncludeTrailingPathDelimiter(gPath);
 
  Memo1.Clear;
  Memo1.Lines.Add('Маска: все файлы, начинающиеся с букв:');
  Memo1.Lines.Add('русские: "а", "А", английские: "a", "A".');
  Memo1.Lines.Add('Начальная папка:');
  Memo1.Lines.Add(gPath);
  Memo1.Lines.Add('Список:');
  GetFiles(gPath, ['а', 'А', 'a', 'A'], '', Memo1.Lines);
end;
 
end.
В Мемо будут выводится также папки, которые не удовлетворяют условию поиска, но такие папки заключаются в круглые скобки. Это нужно для того, чтобы в Мемо была правильно показана древовидная файловая структура.
0
17.01.2013, 10:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2013, 10:08
Помогаю со студенческими работами здесь

Определить сколько в отделе сотрудников, фамилии которых начинаются на заданную букву
Не хватает времени сделать, помогите, пожалуйста, &quot;Определить сколько в отделе сотрудников, ...

Вывести из таблицы category уникальный список категорий, названия которых начинаются на букву M
Вывести из таблицы category уникальный список категорий, названия которых начинаются на букву M:

Написать программу, которая выводит на экран список всех файлов и каталогов
Написать программу, которая выводит на экран список всех файлов и каталогов, содержащихся в...

Определить годы рождения и имена студентов, фамилии которых начинаются на заданную букву
Дана информация о группе студентов. Для каждого студента указать ФИО, год рождения, средний балл....

Выполнить поиск студентов, чьи фамилии начинаются или заканчиваются на заданную букву
В StringGrid1 разместить информацию о студентах: шифр зачетной книжки, ФИО, группа. Выполнить поиск...

Вывести в текстовый файл фамилии пассажиров, фамилии которых начинаются на заданную букву
Помогите найти ошибку, не работает процедура Info()program lab4; uses crt; type item =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru