![]() |
Помогите найти загвоздку в циклах
Есть следующая задача: получить из определённой папки список вложенных в неё папок(один уровень). В них находятся текстовые документы. Нужно, при нажатии на кнопку, внести в базу полные пути файлов и количество их строк из некоторых вложенных папок. Делается всё в С++ Builder 6.0.
Код:
void __fastcall TForm1::Button1Click(TObject *Sender) Поставил в конце первого цикла вывод переменной i на Label и секундную паузу, чтоб проследить за выполнением цикла. DirectoryListBox1 содержит 11 папок. При запуске цикла программа некоторое время не отвечает, затем цикл закрывается, на Label цифра 7, а в базе опять таки те же файлы из первой папки. В принципе проблема решается разделением циклов. Делаем, к примеру, скрытый компонент Memo. В него вносим названия папок первым циклом. Вторым уже пробегаемся по файлам. Так работает, но мне такой подход кажется нерациональным. И интересно всё-таки, что ж за загвоздка в данном коде? |
|
Ну так это условие отбора папок. Нашёл папку, начинающуюся на "2", обработал, занёс в базу. Дальше инкримент увеличивается и в dir должно попасть имя следующей папки из DirectoryListBox1.
|
Apock, а можно заполучить проект (пусть урезанный) и тестовый набор папок?
Я хоть трассировку сделаю. P.S. В воскресенье я исчезну на неделю. Т.ч. времени совсем чуть-чуть или "до послезавтра". |
Я вот может что-то не понимаю.
Цитата:
явный выход за границы (не проверяется, достаточно ли в строке символов). Хотя в борландовской строке вроде оператор [] выдаёт исключение, если что-то не так. |
dir - строка AnsiString, которой присваивается имя каталога. [1] - указатель на первый символ строки.
Имена папок пустыми быть не могут, поэтому проверять число символов в принципе не важно. Вообще правильнее будет dir[1]=='2'. Исправил, но это не даёт нужного результата. Что-то вообще запутался. На втором пк стоит c++ builder XE. Перенёс проект туда. Он ищет файлы в папке на уровень выше почему-то, а их там естественно нет. Пришлось изменить строку Цитата:
После этого поиск прошёл правильно и в базу попали файлы из всех папок. Этого момента с папками так и не понял, но получается, что всё-таки проблема какая-то с работой вложенных друг в друга циклах для Builder6 есть. |
Apock,
Цитата:
Будет исходник и проверочные данные - проблем нет. В противном случае, я найду чем заняться. Без обид, но вы не способствуете тому, чтобы мы вам помогли. |
Вложений: 1
Это я да, тормознул чего-то. Занялся тестами на BuilderXE и забыл обо всём.
Внутри файлик с комментами. |
Проект скачал. Как появится окно(ориентировочно в воскресенье после обеда), посмотрю, что да как.
|
Цитата:
Цитата:
|
Если это второй элемент, то странно. Как он тогда вообще какие-то данные находит. Ни одной папки с вторым символом "2" нет.
А с Мемо это я так. Привычно просто наблюдать за всем происходящим, пока программу пишешь. |
Время: 00:58. |
Время: 00:58.
© OSzone.net 2001-