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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите найти файлы на жестком диске, Задача найти все файлы с заданым именем 
:(
    Опции темы
Vitiligo
  Дата 15.6.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пожалуйста помогите... задача такая, мне нужно найти все файлы с определенным именем на всех носителях и провести определенную операцию(какую неважно)

Тоесть пользователь задает название Текстового файла и нужно найти все файлы с таким именем... если напишите код процедуры(поидее она не очень большая) - буду очень признателен!! 
PM MAIL ICQ   Вверх
Alexeis
Дата 15.6.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Для поиска нужно подключить модуль DOS и использовать его функции FSearch - поиск файла в текущем каталоге.
и FindFirst - поиск первого файла с заданным именем и атрибутами.
После нахождения очередной директории необходимо осуществить рекурентный поиск вней. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Vitiligo
  Дата 15.6.2006, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вы меня извините... сам я Дельфист и С++'шник (о как)
Просто знакомая попросила помочь ей с лабороторной по паскалю... там довольно таки много задач было и только одну я не смог реализовать, по причине того, что никогда не работал на чистом паскале...
поэтому нельзя ли написать исходник процедуры... буду премного благодарен smile    

Это сообщение отредактировал(а) Vitiligo - 15.6.2006, 15:19
PM MAIL ICQ   Вверх
Alexeis
Дата 15.6.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Vitiligo, К сожалению я тоже 
Цитата(Vitiligo @  15.6.2006,  14:17 Найти цитируемый пост)
 сам я Дельфист и С++'шник (о как)
 и руководствуюсь скудными воспоминаниями. У меня даже компилятора сейчас нет, так что непосредственно кодом не могу - только алгоритмом smile  


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
volvo877
Дата 15.6.2006, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Ну, если на всех носителях, то вот так:
Код

uses dos;

Procedure DirTree(path, fname: string);
var
  sr:searchrec;
begin
  If path[length(path)]<>'\' then path:=path+'\';
  findfirst(path+'*.*',AnyFile,sr);
  while (doserror=0) do begin
    if (sr.attr and directory) = directory then begin
      if (sr.name<>'.') and (sr.name<>'..') then
        DirTree(path+sr.name+'\', fname);
    end
    else begin
      if sr.name = fname then begin

        writeln(path+sr.name);
        { ... Здесь - делаешь любую нужную тебе операцию ... }

      end;
    end;
    findnext(sr);
  end;
end;

var
  i: byte; ch: char;
  disk: longint;
  f_name: string;

begin
  readln(f_name);
  i := 3;
  ch := 'C';
  disk := disksize(i);
  while disk <> -1 do begin { Определение наличия носителя }
    dirtree(ch+':\', f_name);
    inc(i); ch := succ(ch);
    disk := disksize(i);
  end;

end.
 
PM MAIL   Вверх
Vitiligo
Дата 16.6.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибки smile  
PM MAIL ICQ   Вверх
Guedda
Дата 18.6.2006, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

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



А разве в чистом Паскале есть функции FindFirst FindNext? 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Linus
Дата 15.8.2006, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Guedda @ 18.6.2006,  23:56)
А разве в чистом Паскале есть функции FindFirst FindNext?

По крайней мере в Турбо Паскалике (да и в Борланд) есть. Первый раз я опробовал FindFirst и FindNext на TP6
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

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

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

2. Публиковать ссылки на варез

3. Оффтопить

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

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

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


 




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


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

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