|
Вопрос # 4 375/ вопрос открыт / |
|
Здравствуйте, эксперты!
Меня уже клинит... Я просто не могу найди выход из этой ситуации, смотрите код в приложении, и вы всё поймёте... Дело в том, что когда заходит в первую дерикторию, то каталог "." обходит, а за ним идёт каталог ".." который возвращает меня назад... Программа зацикливается, помогите, ПЛИЗ!!!
Приложение: Переключить в обычный режим- procedure find(listbox1 : tlistbox);
-
- var
- searchResult : TSearchRec;
-
-
- begin
-
- path := GetCurrentDir();
-
- if path[length(path)] <> '' then path := path + '';
-
- setCurrentDir(path);
-
- if FindFirst('*', faDirectory, searchResult) = 0 then
-
- begin
-
- repeat
-
- if pos(file_find, searchResult.Name) <> 0 then
- listbox1.Items.Add(searchResult.Name + ' _ ' + GetCurrentDir() +
searchResult.Name);
-
-
-
- begin
-
- if searchResult.Name <> '.' then
-
-
-
- SetCurrentDir(searchResult.Name);
- find(listbox1);
- SetCurrentDir('..');
-
- end;
-
- end;
-
- Application.ProcessMessages;
-
- until FindNext(searchResult) <> 0;
-
- FindClose(searchResult);
-
- end;
- end;
 |
Вопрос задал: 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 (статус: 4-ый класс), 2 июля 2010, 20:27 [#1]:
и что тут сложного?
в строчке
if searchResult.Name <> '.' then
добавить:
if (searchResult.Name <> '.')and(searchResult.Name <> '..') then
|
|
padonak (статус: Посетитель), 3 июля 2010, 03:57 [#2]:
Amidamaru: если бы всё так просто... пойми, тогда получится, что он обойдёт каталог для выхода, и просчитав все файлы в данном каталоге выдаст сообщение об ошибке... я пробовал вот так:
if (searchResult.Name <> '.')and(searchResult.Name <> '..') then
...
...
...
if FindNext(searchResult) = 0 then setcurrentdir('..');
но из этого ничего не вышло... если закончит просматривать все файлы в корневом каталоге, то поднимется выше, что мне совсем не нужно...
|
|
padonak (статус: Посетитель), 3 июля 2010, 04:02 [#3]:
Amidamaru: сложность в том, что директории "." и ".." считываются как первая и вторая... если бы они считывались как последние, то проблем бы не возникло...
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|