Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.05.2008, 15:08   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Как найти файл на диске?

Второй час роюсь в нете, перебираю разные варианты, однако так и не нашел правильного алгоритма, как найти определенный файл на диске.

К примеру нужно найти файл test.mpg. В случае удачного поиска необходимо вывести путь к этому файлу. Может у кого есть готовый пример?
Dux вне форума
Старый 25.05.2008, 15:27   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Тема уже обсуждалась на форуме. Вот переделал чуток своего сыщика для консоли
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

procedure ScanDir(StartDir: string; FileNam: string);
var  SearchRec : TSearchRec;
begin
    if StartDir[Length(StartDir)] <> '\' then
         StartDir := StartDir + '\';
    try
    if FindFirst(StartDir+FileNam, faAnyFile, SearchRec) = 0 then
    repeat   
        if (SearchRec.Attr and faDirectory) <> faDirectory then begin
            writeln(StartDir+SearchRec.Name);
            readln;
            halt
        end;
    until FindNext(SearchRec) <> 0;FindClose(SearchRec);
    except end;
    {разделение по каталогам}
    if FindFirst(StartDir+'*', faAnyFile, SearchRec) = 0 then
    try
    repeat
        if (SearchRec.Attr and faDirectory) = faDirectory then
        if (SearchRec.Name <> '..')
            and (SearchRec.Name <> '.') then
        begin
            ScanDir(StartDir + SearchRec.Name + '\', FileNam);
        end;
    until FindNext(SearchRec) <> 0;FindClose(SearchRec);
    except end;
end;

var
  chrI:char;
begin
  for chrI:='A' to 'Z' do begin
    //if not diskexist(chrI) then continue;
    ScanDir(chrI+':\','test.mpg') //имя файла
  end
end.
eoln вне форума
Старый 25.05.2008, 15:42   #3
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Ув. Eoln, спасибо, разобрался!!

Последний раз редактировалось Dux; 25.05.2008 в 15:57.
Dux вне форума
Старый 25.05.2008, 16:15   #4
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Возник следующий вопрос, как найти все файлы на диске, в имени которых присутствует определенное слово, к примеру 'win'?

Уже разобрался в маске надо написать win*.*

Последний раз редактировалось Dux; 25.05.2008 в 16:19.
Dux вне форума
Старый 13.09.2014, 19:02   #5
crayzi_skript
Пользователь
 
Регистрация: 26.09.2007
Сообщений: 14
По умолчанию как это допилить?

Как можно сделать чтоб поиск не останавливался на первом найденном файле. Допустим я ищу все файлы на диске с названием 1.txt а не один?
Помогите
crayzi_skript вне форума
Старый 13.09.2014, 19:37   #6
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Вместо большого кода можно использовать FileExists("Полное имя файла"). Оно выдаст True, ecли файл есть и False, если его нет.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума
Старый 13.09.2014, 19:38   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

halt убери.
I'm learning to live...
Stilet вне форума
Старый 13.09.2014, 19:49   #8
crayzi_skript
Пользователь
 
Регистрация: 26.09.2007
Сообщений: 14
По умолчанию

я в этом не особо разбираюсь, что за halt?
crayzi_skript вне форума
Старый 13.09.2014, 19:53   #9
crayzi_skript
Пользователь
 
Регистрация: 26.09.2007
Сообщений: 14
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Вместо большого кода можно использовать FileExists("Полное имя файла"). Оно выдаст True, ecли файл есть и False, если его нет.
так оно опять же таки даст true и остановится мол вот он файл
crayzi_skript вне форума
Старый 13.09.2014, 19:55   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В коде. Там. Присмотрись. Команда halt стоит. Она вызывает завершение работы программы.
Код:
        if (SearchRec.Attr and faDirectory) <> faDirectory then begin
            writeln(StartDir+SearchRec.Name);
            readln;
            halt
        end;
Увидел?
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить сообщение о новом диске Comer_Jus Общие вопросы Delphi 2 11.08.2008 15:26
Как программно через delphi создать папку на диске? VenMaster Общие вопросы Delphi 5 25.05.2008 21:09
Браузер файлов на диске parampampam Фриланс 6 03.02.2008 20:48
Помогите, Как программо удалить файл который находится на жестком диске. niva622 Помощь студентам 3 19.04.2007 19:09