Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 375

/ вопрос открыт /

Здравствуйте, эксперты!
Меня уже клинит... Я просто не могу найди выход из этой ситуации, смотрите код в приложении, и вы всё поймёте... Дело в том, что когда заходит в первую дерикторию, то каталог "." обходит, а за ним идёт каталог ".." который возвращает меня назад... Программа зацикливается, помогите, ПЛИЗ!!!

Приложение:
  1. procedure find(listbox1 : tlistbox);
  2.  
  3. var
  4. searchResult : TSearchRec;
  5.  
  6.  
  7. begin
  8.  
  9. path := GetCurrentDir();
  10.  
  11. if path[length(path)] <> '' then path := path + '';
  12.  
  13. setCurrentDir(path);
  14.  
  15. if FindFirst('*', faDirectory, searchResult) = 0 then
  16.  
  17. begin
  18.  
  19. repeat
  20.  
  21. if pos(file_find, searchResult.Name) <> 0 then
  22. listbox1.Items.Add(searchResult.Name + ' _ ' + GetCurrentDir() + searchResult.Name);
  23.  
  24.  
  25.  
  26. begin
  27.  
  28. if searchResult.Name <> '.' then
  29.  
  30.  
  31.  
  32. SetCurrentDir(searchResult.Name);
  33. find(listbox1);
  34. SetCurrentDir('..');
  35.  
  36. end;
  37.  
  38. end;
  39.  
  40. Application.ProcessMessages;
  41.  
  42. until FindNext(searchResult) <> 0;
  43.  
  44. FindClose(searchResult);
  45.  
  46. end;
  47. end;


padonak Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: padonak (статус: Посетитель)
Вопрос отправлен: 2 июля 2010, 18:43
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: IlluminatI

Здравствуйте, padonak!
Вот тебе программка с исходником. Там то, что тебе нужно. Код простой, так что разобраться труда не составит.
http://depositfiles.com/files/zc0txslga

Ответ отправил: IlluminatI (статус: 2-ой класс)
Время отправки: 3 июля 2010, 09:16
Оценка за ответ: 5

Комментарий к оценке: спс большое!!!

Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 3 июля 2010, 04:02; участников в обсуждении: 2.
Amidamaru

Amidamaru (статус: 4-ый класс), 2 июля 2010, 20:27 [#1]:

и что тут сложного?
в строчке
if searchResult.Name <> '.' then
добавить:
if (searchResult.Name <> '.')and(searchResult.Name <> '..') then
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
padonak

padonak (статус: Посетитель), 3 июля 2010, 03:57 [#2]:

Amidamaru: если бы всё так просто... пойми, тогда получится, что он обойдёт каталог для выхода, и просчитав все файлы в данном каталоге выдаст сообщение об ошибке... я пробовал вот так:

if (searchResult.Name <> '.')and(searchResult.Name <> '..') then
...
...
...
if FindNext(searchResult) = 0 then setcurrentdir('..');

но из этого ничего не вышло... если закончит просматривать все файлы в корневом каталоге, то поднимется выше, что мне совсем не нужно...
padonak

padonak (статус: Посетитель), 3 июля 2010, 04:02 [#3]:

Amidamaru: сложность в том, что директории "." и ".." считываются как первая и вторая... если бы они считывались как последние, то проблем бы не возникло...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.03 сек.