Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм обхода файловой системы, Вопрос 
:(
    Опции темы
Stalkerdi
  Дата 5.5.2005, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что такое "Алгоритм обхода файловой системы", для чего это надо, зачем и почему. Прошу дать ак можно больше инфы, ссылки или ещё что-нить, плиз smile
Добавлено @ 16:41
И еще вопрос: Что такое фрактальные алгоритмы, для чего они , зачем и почему.
PM MAIL   Вверх
~FoX~
Дата 5.5.2005, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Да все просто:
Файловая система представляется как дерево с кучий ветвей и путей, для полного обхода дерева каталогов и файлов в них необходимо либо знать их количество либо использовать рекурсию
Код

//==================Поиск файлов==============
procedure GetFile(Dir: string; ras: string);
var
  f : TSearchRec;
  i : integer;
  s, key : string;
begin
  i := FindFirst(Dir+ras, faAnyFile, f);
   while (i=0) do
    begin
     s := Dir+f.Name;
     i := FindNext(f);
     Application.ProcessMessages;
    end;
  FindClose(f);
end;

//==================Поиск дирикторий==============
procedure GetDir(Dir: string);
var
  f : TSearchRec;
  i : integer;
  JPGFlag: Boolean;
begin
  i := FindFirst(Dir+'*.*', faDirectory, f);
 GetFile(Dir, '*.BMP')
  while (i=0) do
    begin
    if (f.Name='.') or (f.Name='..') then
    else
      begin
      if (f.Attr and faDirectory)<>0 then
        begin
          GetDir(Dir+f.Name+'\');
          Application.ProcessMessages;
        end
      else
        begin
         i := FindNext(f);
        end;
      end;
      i := FindNext(f);
      Application.ProcessMessages;
    end;
  FindClose(f);
end;



Рекурсия это когда функция вызывает саму себя или свой кусок.
В этом примере две функции вызывают друг друга рекурсивно.

Это сообщение отредактировал(а) ~FoX~ - 5.5.2005, 16:51


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Yanis
Дата 5.5.2005, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Цитата
Рекурсия это когда функция вызывает саму себя или свой кусок.
Как это кусок?

Цитата
//==================Поиск файлов==============
procedure GetFile(Dir: string; ras: string);
var
  f : TSearchRec;
  i : integer;
  s, key : string;
begin
  i := FindFirst(Dir+ras, faAnyFile, f);
  while (i=0) do
    begin
    s := Dir+f.Name;
    i := FindNext(f);
    Application.ProcessMessages;
    end;
  FindClose(f);
end;
Где здесь рекурсия?

Цитата
В этом примере две функции вызывают друг друга рекурсивно.
Это вроде 2 процедуры!


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
batigoal
Дата 5.5.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Как-то у вас все сложно. Вот пример метода на Java для каскадного удаления папки:
Код

private void cascadeDelete(File f)
{
   if(f.isDirectory() && f.listFiles().length!=0)
   {
       File[] filesInDir = f.listFiles();
       for(int i=0; i<filesInDir.length; i++)
       {
            cascadeDelete(filesInDir[i]);
        }
     }
     f.delete();
}


В нем и рекурсия есть.

Это сообщение отредактировал(а) Lamer George - 6.5.2005, 11:35


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
~FoX~
Дата 6.5.2005, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Yanis
Функция GetDir рекурсивно вызывает себя.
А две просто потому что мне удобно было именно так в проекте сделать, и править лениво smile


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
NeoN2k
Дата 6.5.2005, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Lamer @ 5.5.2005, 17:31)
Как-то у вас все сложно. Вот пример метода на Java для каскадного удаления папки

Ну.... не тормози.... тута Delphi а не Java... флудишь...(сорри за флуд)
PM MAIL   Вверх
batigoal
Дата 6.5.2005, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



NeoN2k Это где ты такое увидел??? Вот вопрос:

Цитата(Stalkerdi @ 5.5.2005, 17:39)
Что такое "Алгоритм обхода файловой системы", для чего это надо, зачем и почему. Прошу дать ак можно больше инфы, ссылки или ещё что-нить, плиз 
И еще вопрос: Что такое фрактальные алгоритмы, для чего они , зачем и почему.


Где здесь слово "Delphi"??


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
~FoX~
Дата 6.5.2005, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Lamer George
Тема перемещена из раздела Delphi - общие вопросы.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
batigoal
Дата 6.5.2005, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Тогда - сорри за резкость.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Чердак
Дата 6.5.2005, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



smile ~FoX~, а не мог бы ты по подробнее описать процедуру GetDir, просто Delphi тока начал изучать и не совсем понимаю, что мне данная процедура даст, смогу ли я с помощью нее вывести каталог диска. Просто нужно создать файловый менеджр и почему-то решил, что лучше попробовать на Delphi.
--------------------
PM MAIL   Вверх
batigoal
Дата 9.5.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Чердак зря smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Чердак
Дата 9.5.2005, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Lamer George, а на чем лучше? smile
--------------------
PM MAIL   Вверх
batigoal
Дата 9.5.2005, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



На чем лучше - это вопрос для религиозных войн. smile Я бы делал на Java, потому что знаю его лучше всего. Делал когда-то и на Си. А Delphi не владею. Но это все непринципиально.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
~FoX~
Дата 11.5.2005, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Цитата
~FoX~, а не мог бы ты по подробнее описать процедуру GetDir, просто Delphi тока начал изучать и не совсем понимаю, что мне данная процедура даст, смогу ли я с помощью нее вывести каталог диска


Что конкретно тебе не понятно?

Код

procedure GetFile(Dir: string; ras: string); 
//Dir - путь где искать будем, Ras - расширенеие(можно выкинуть за ненадобностью)
var
  f : TSearchRec; //Структура где храниться вся инфа о найденных вайлах
  i : integer; //Счетчик который возвращает не 0 если найденый фалы
 s : string; //Сюда кладем путь
begin //Поехали
  i := FindFirst(Dir+ras, faAnyFile, f); //Ищем первый каталог удовлетворяющий условию
  while (i=0) do  //Пока счетчик не равен 0 продолжаем искать
    begin 
    s := Dir+f.Name; //Положили имечко сюда
    i := FindNext(f); //Ищем следующий каталог
    Application.ProcessMessages; //Разрешаем процессу реагировать на внешнее воздействие )))
    end;
  FindClose(f); //Баста
end;



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


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

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


 




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


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

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