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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по FindNext 
:(
    Опции темы
NiJazz
  Дата 7.3.2004, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

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



Вот такой код:
Код

if FindFirst(DataDirName+'*.*', faDirectory, sr) = 0 then
  while FindNext(sr) = 0 do
    begin
     if (sr.Name = '.') or (sr.Name = '..') then continue;
     OrgsList.Add(sr.Name);
    end;


Мне нужно, чтобы в список заносились только названия папок. Если убрать *.*, то функция не заполняет список вовсе. А при таком раскладе она кидает в список также и файлы, лежащие по указанному пути, хотя указано faDirectory. Какой выход?


PM MAIL   Вверх
December
Дата 7.3.2004, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


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

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



Вырежь себе из этого кода что нужно.
Работает 100%.
Код
procedure ScanDir (Path:string;SearchMask:TStrings;ScanSub:boolean);
var
 SearchRec:TSearchrec;
 a,i:integer;
 wstr:string;
begin
if ScanSub then
  begin
  FindFirst(path+'\*.*',faDirectory,SearchRec);{.  found}
  FindNext(SearchRec);                         {.. found}
  a:=FindNext(SearchRec);
  while a=0 do
       begin
       if (SearchRec.Attr and faDirectory)>0 then ScanDir(Path+'\'+SearchRec.Name,SearchMask,ScanSub);
       a:=FindNext(SearchRec);
       end;{while}
  FindClose(SearchRec);
  end;{if}
for i:=0 to SearchMask.Count-1 do
begin
a:=FindFirst(Path+'\'+SearchMask[i],faAnyFile,SearchRec);
while a=0 do
  begin
  if (SearchRec.Name='.') or (SearchRec.Name='..') then
               begin
               a:=FindNext(SearchRec);
               continue;
               end;{if}

//OPERATION ON FILE

  a:=FindNext(SearchRec);
  end;{while}
FindClose(SearchRec);
end;{for}

end; {ScanDir}



--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Петрович
Дата 7.3.2004, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата
Работает 100%.

Ну не совсем. Попробу например вызвать так:
Код
var SearchMask :TStrings;
...
 SearchMask.Text := '*.*';
 ScanDir ('c:',SearchMask,True);
...

При этом, ты не получишь файлы из первых двух подкаталогов.
Дело в том, что в корневом каталоге нет '.' и '..'.



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

1. Публиковать ссылки на вскрытые компоненты

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

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


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

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


 




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


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

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