![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите найти загвоздку в циклах |
|
C/C++ - Помогите найти загвоздку в циклах
|
![]() Пользователь Сообщения: 75 |
Есть следующая задача: получить из определённой папки список вложенных в неё папок(один уровень). В них находятся текстовые документы. Нужно, при нажатии на кнопку, внести в базу полные пути файлов и количество их строк из некоторых вложенных папок. Делается всё в С++ Builder 6.0.
void __fastcall TForm1::Button1Click(TObject *Sender) { TStringList *list = new TStringList; //для хранения содержимого файла int cnt; //число строк в файле int i=0; //для цикла while DirectoryListBox1->Directory=direct; //установка начальной папки, заранее определённой в direct while(i < DirectoryListBox1->Count) { dir=DirectoryListBox1->Items->Strings[i]; //берём по очереди названия вложенных папок if(dir[1]='2') //нам нужны только папки, начинающиеся на "2" { FileListBox1->Directory=direct+"\\"+dir; //получаем список файлов в папке for(int z=0; z<FileListBox1->Count; z++) //приступаем к их обработке { list->LoadFromFile(DirectoryListBox1->Directory+"\\"+FileListBox1->Items->Strings[z]); //получаем содержимое файла cnt=list->Count; //считаем кол-во строк ADOTable1->Insert(); //добавляем данные в базу ADOTable1->FieldByName("FilePath")->AsString=DirectoryListBox1->Directory+"\\"+FileListBox1->Items->Strings[z]; ADOTable1->FieldByName("Lines")->AsInteger=cnt; ADOTable1->Post(); } } i++; } } Поставил в конце первого цикла вывод переменной i на Label и секундную паузу, чтоб проследить за выполнением цикла. DirectoryListBox1 содержит 11 папок. При запуске цикла программа некоторое время не отвечает, затем цикл закрывается, на Label цифра 7, а в базе опять таки те же файлы из первой папки. В принципе проблема решается разделением циклов. Делаем, к примеру, скрытый компонент Memo. В него вносим названия папок первым циклом. Вторым уже пробегаемся по файлам. Так работает, но мне такой подход кажется нерациональным. И интересно всё-таки, что ж за загвоздка в данном коде? |
|
------- Отправлено: 22:39, 06-09-2012 |
![]() Пользователь Сообщения: 75
|
Профиль | Отправить PM | Цитировать Если это второй элемент, то странно. Как он тогда вообще какие-то данные находит. Ни одной папки с вторым символом "2" нет.
А с Мемо это я так. Привычно просто наблюдать за всем происходящим, пока программу пишешь. |
------- Отправлено: 22:53, 17-09-2012 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Помогите найти mp3 | united | Хочу все знать | 9 | 15-10-2008 17:41 | |
Помогите найти | Dj Dynamite | Мобильные ОС, смартфоны и планшеты | 4 | 07-05-2006 19:02 | |
Помогите найти | Dj Dynamite | Мобильные ОС, смартфоны и планшеты | 5 | 09-10-2004 22:31 |
|