Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Поиск файлов (билдер)


Автор: Klin 8.10.2002, 16:17
Как к примеру найти файл, который записан в поле Edit (ну или других полях)?
Заранее благодарю.

Автор: podval 8.10.2002, 17:33
В Билдере почти так же, как и в Дельфи. В статье http://www.infocity.kiev.ua/prog/delphi/content/delphi093.phtml?id=2026
отлично расписано. Если есть трудности с переводом с Дельфи в Билдер, дай фрагмент кода, я тебе переведу.

Автор: Klin 9.10.2002, 18:16
Если не трудно переведи:
procedure TForm1.FindFile(Dir:String);
Var SR:TSearchRec;
   FindRes:Integer;
begin
FindRes:=FindFirst(Dir+'*.*',faAnyFile,SR);
While FindRes=0 do
  begin
     if ((SR.Attr and faDirectory)=faDirectory) and
     ((SR.Name='.')or(SR.Name='..')) then
        begin
           FindRes:=FindNext(SR);
           Continue;
        end;

     if ((SR.Attr and faDirectory)=faDirectory) then // если найден каталог, то
        begin
           FindFile(Dir+SR.Name+'\'); // входим в процедуру поиска с параметрами текущего каталога + каталог, что мы нашли
           FindRes:=FindNext(SR); // после осмотра вложенного каталога мы продолжаем поиск в этом каталоге
           Continue; // продолжить цикл
        end;

     ListBox1.Items.Add(SR.Name);
     FindRes:=FindNext(SR);
  end;
FindClose(SR);
end;

Автор: Vit 9.10.2002, 23:08
Функции те же FindFirst/FindNext. Еще можно посмотреть в наш FAQ (но там тоже на Дельфи: http://www.forum.vingrad.ru/cgi-bin/newforum/ikonboard.cgi?act=ST;f=32;t=1924) Если мне память не изменяет то в Help для Билдера есть пример использования FindFirst/FindNext.


Автор: Baa 10.10.2002, 00:30
А еще можно тут посмореть...
http://devstate.by.ru/tutorial/FileSearch.html

Автор: podval 10.10.2002, 03:53
Даю перевод.
Код

void TForm1.FindFile(AnsiString Dir);
{
  TSearchRec SR;
  int FindRes;

  FindRes = FindFirst(Dir + "*.*", faAnyFile, SR);
  while(FindRes == 0)
  {
    if ((SR.Attr && faDirectory) == faDirectory) &&
       ((SR.Name == ".") || (SR.Name == ".."))
    {
          FindRes = FindNext(SR);
    }
    if ((SR.Attr && faDirectory) == faDirectory) // если найден каталог, то
    {
          FindFile(Dir + SR.Name + "\\"); // входим в процедуру поиска
                                     // с параметрами текущего каталога +
                                     // каталог, что мы нашли
          FindRes = FindNext(SR); // после осмотра вложенного каталога мы
                                  // продолжаем поиск в этом каталоге
    }
    ListBox1.Items.Add(SR.Name);
    FindRes = FindNext(SR);
 }
 FindClose(SR);
}

Автор: Klin 10.10.2002, 16:09
Спасибо podval!
Ты мне очень помог!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)