Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Состав папки 
:(
    Опции темы
Serebrus
Дата 15.8.2007, 13:46 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Дорогие коллеги.
У меня к вам один несложный (для вас) вопрос:
Дана конкретная папка. Как можно составить иерархический список составляющих подпапок и файлов?
Напишите пожалуйста код.
Спосибо за ответ.
PM MAIL   Вверх
_hunter
Дата 15.8.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



ищи по форуму "FindFirst"...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Serebrus
Дата 15.8.2007, 20:03 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Спосибо но, мне нужен конкретный код
PM MAIL   Вверх
dumb
Дата 15.8.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



Цитата(Serebrus @  15.8.2007,  13:46 Найти цитируемый пост)
Дорогие коллеги.
Цитата(Serebrus @  15.8.2007,  20:03 Найти цитируемый пост)
мне нужен конкретный код 

Проследуйте в Центр помощи, "коллега".
PM MAIL   Вверх
Snowy
Дата 15.8.2007, 20:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Вопрос забитый и истасканый.
Конкретный код в любом факе.
Например www.drkb.ru
PM MAIL   Вверх
Serebrus
Дата 16.8.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Я скачал базу DRKB, но в приведенных в нем примерах нету не одного явно подходящего. В примерах осуществляется поиск, но результат поиска не имеет иерархический вид.
PM MAIL   Вверх
Snowy
Дата 16.8.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Вид иерархического списка зависит от целей.
Они известны тебе.
Может ты хочешь построить его визуально в виде TTreeView, а может в памяти.
А, если в памяти, то какая информация тебе нужна? Будут это объекты, структуры или просто списки типа TStringList?
Способ организации списка зависит от целей его использования.
Понятие иерархического списка довольно абстрактно. Иерархию можно построить из чего угодно.
В общем случае, код будет отличаться тем, что будет дополнительно передаваться в рекурсивную процедуру ссылка на родителя, которому и будут добавляться элементы иерархии.
PM MAIL   Вверх
Serebrus
Дата 17.8.2007, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Я бы хотел составить из данного каталога простую иерархию, типа:

D:\
     Folder 1
                 File 1
                 File 2
     Folder 2
     Folder 3
                 File 4

Сам иду по токой логике:

Цитата

var
  Form1: TForm1;
  STL: array[1..100] of TStringList; //100-eto primerno

implementation

{$R *.dfm}

procedure Scan(Root: String; n: Integer);
var SR: TSearchRec;
begin
STL[n]:=TStringList.Create;
if FindFirst(Root+'\*.*', faAnyFile, SR)=0 then
 repeat
  if (SR.Name<>'.')and(SR.Name<>'..') then
   STL[n].Add(SR.Name);
  //Form1.Memo1.Lines.Add(SR.Name);
 until FindNext(SR)<>0;
FindClose(SR);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,j,k,m,n: Integer;
    Root: String;
begin
Root:='D:\Îò÷åò KBase';
Scan(Root,1);
n:=STL[1].Count;
for i:=2 to n do
 if STL[i-1].Count<>0 then
  for m:=1 to STL[i-1].Count do
   Scan(Root+STL[i-1].Strings[m-1],i);
for j:=1 to n do
 for k:=1 to STL[j].Count do
  Memo1.Lines.Add(STL[j].Strings[k-1]);
end;


помогите пожалуйста доделать.

Это сообщение отредактировал(а) Serebrus - 17.8.2007, 14:39
PM MAIL   Вверх
KL911
  Дата 18.8.2007, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.9.2006

Репутация: нет
Всего: нет



Цитата

D:\
     Folder 1
                 File 1
                 File 2
     Folder 2
     Folder 3
                 File 4


Вот... сделал что-то похожее... 
делал на быструю руку... только для примера... дерево будет выводиться на Memo1 

Код

var
  Form1: TForm1;
implementation

{$R *.dfm}
function Abzac(n:integer):string;
var i:integer; res:string;
begin
   res:='';
   for i := 1 to (n*3) do
      res:=res+' ';
   Abzac:=res
end;

procedure Scan(Root:string;n:integer);
var SR:TSearchRec;
begin
   if FindFirst(Root+'*.*',faAnyFile,SR)=0 then
      repeat
        if (SR.Name<>'.')and(SR.Name<>'..') then
        if (SR.Attr=16) then
         begin
            Form1.Memo1.Lines.Add(Abzac(n)+SR.Name);
            n:=n+1;
            Scan(Root+SR.Name+'\',n);
            n:=n-1;
         end;
      until (FindNext(SR)<>0);
   FindClose(SR);

   if FindFirst(Root+'*.*',faAnyFile,SR)=0 then
      repeat
        if (SR.Name<>'.')and(SR.Name<>'..') then
        begin
         if (SR.Attr<>16) then
           Form1.Memo1.Lines.Add(Abzac(n)+SR.Name);
        end;
      until (FindNext(SR)<>0);
   FindClose(SR);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,j,k,m,n: integer;
    Root: string;
begin
    Root:='C:\';
    Memo1.Lines.Add(Root);
    Scan(Root,1);
end;

end.


в процедуре Scan 2 раза происходит поиск... для того чтобы вначале шли папки а потом файлы... 
ето конечно совершенно не рационально ... но если понадобиться можно по красивше всё ето сделать.... 

P.S.: не ругаться если что не так... уже как 2 месяца на C# сижу... мог подзабыть всёsmile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1347 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.