Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.90
Day
1159 / 964 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
#1

findfirst+findnext - C++ Builder

13.02.2010, 11:21. Просмотров 6506. Ответов 1
Метки нет (Все метки)

Много лет работал со сладкой парочкой findfirst-findnext
и совершенно не подозревал в них такого коварства!
Оказывается, несмотря на то, что даю флаг FA_DIREC,
последующий findnext перебирает ВСЕ файлы в директории.
http://www.cyberforum.ru/cpp-builder/thread2173592.html
Конечно, можно не директории отбросить if (.. & FA_DIREC),
но, представляете, сколько это жрет времени при построении
дерева всех поддиректориев диска!
FindFirst-FindNext дает тот же результат!
Нет ли менее прожорливой конструкции ?
Думаю, что эта проблема заинтересует не только меня.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <dos.h>
#include <dir.h>
#include <SysUtils.hpp>
//---------------------
main()
{ struct ffblk fb; int k;
  TSearchRec F;
  printf("findfirst:\n");
  k = findfirst("*.*", &fb, FA_DIREC);
  while (k==0) {
    printf("%s\n", fb.ff_name);
    k = findnext(&fb);
  }
  printf("FindFirst:\n");
  k = FindFirst("*.*", faDirectory, F);
  while (k==0) {
    printf("%s\n", F.Name.c_str());
    k = FindNext(F);
  }
}
/*******************/
Нашел исходный код findfirst - но он на ассемблере,
а я ним никогда не работал
Код небольшой (findfirst - 46 строк, findnext - 35)
Все построено на прерывании int 21h.
И такое ощущение, что так отрабатывает само это прерывание!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2010, 11:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос findfirst+findnext (C++ Builder):

Как реализовать FindNext в FindDialog для компонента RichEdit?
Для текстового редактора необходима кнопка &quot;Найти&quot;. Текст вводится в RichEdit....

FindFirst список файлов
TSearchRec Folder; char Katalog ; int ScrollSearch; ...

Просмотр списка содержимого папки функцией FindFirst
Всем здрасте =) Нашел в интернете нужный код, но не понимаю как он работает...

FindNext в Excel
Необходимо искать слово в столбце, а найдя, записывать его в отдельной ячейке....

clientdataset FindNext()
После манипуляций с отфельтрованым сетом нужно вернутся на ту же запись....

1
Ex_Soft
107 / 107 / 15
Регистрация: 28.01.2009
Сообщений: 481
13.02.2010, 13:08 #2
тынць -> тынць
Problem:
When using findfirst with the FA_DIREC attribute, I get regular DOS files in addition to the directories. How do I get just the directories?
Solution:
Using FA_DIREC doesn't mean *only* return directories; it means include directories along with regular files. The solution is to check each ffblk found against the FA_DIREC attribute.
P.S. А где Вы
Цитата Сообщение от Day Посмотреть сообщение
Нашел исходный код findfirst - но он на ассемблере
? Бо у меня в стройке в $(BCB)\Source\Rtl\Source\io\findfirst.c - ни строчки на ассемблере...

Цитата Сообщение от Day Посмотреть сообщение
Все построено на прерывании int 21h.
И такое ощущение, что так отрабатывает само это прерывание!
Цитата Сообщение от Э. Успенский. "Крокодил Гена и его друзья"
- ...Только я тебе дам гнутые гвозди. Идет?
- Идет! - обрадовался Чебурашка. - Большое спасибо. Только дайте мне уж заодно и гнутый молоток!
- Гнутый молоток? - удивился кладовщик. - А зачем?
- Как - зачем? Забивать гнутые гвозди!..
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2010, 13:08
Привет! Вот еще темы с решениями:

Аналог функций findfirst - findnext
Какие есть в Qt аналоги функций findfirst - findnext ? Задача - получить...

Работа с FindFirst, FindNext, FindClose
возникли проблемы опроса содержимого директории при использовании этого...

поиск файлов (findfirst, findnext)
Здравствуйте, вот пробую написать программу для поиска всех файлов( по маске...

Поиск файлов с помощью FindFirst и FindNext дает лишние файлы
Всем привет!!! Столкнулся с такой ситуацией, что в FindFirst, FindNext...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru