С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 20

Как запустить в поток код поиска и отображения списка файлов

02.05.2012, 18:55. Показов 1410. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята как запустить в поток стандартным TThread С++ Builder нижеприведденый код поиска и отображения списка файлов?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
void __fastcall TForm1::Button_Open_DirClick(TObject *Sender)
{
   UnicodeString inputDir; // каталог, который выбрал пользователь
   Edit1->Text = "";  
   FileListBox->Items->Clear(); //листбокс
   sl_FileList->Clear(); //листстринг
   Button_Run->Enabled = false;
   if(SelectDirectory("Выбор каталога", "", inputDir) == true)
   {
     Edit1->Text = inputDir;
     inputDir = inputDir + "\\";
     ListFiles(inputDir, sl_FileList);
    }
     FileListBox->Items = sl_FileList;
     if (FileListBox->Count == 0)
        LabelFileCount->Caption = "";
     else
        LabelFileCount->Caption = sl_FileList->Count;
    
     if (FileListBox->Count == 0)
    LabelFileCount->Caption = "";
     else
    LabelFileCount->Caption = sl_FileList->Count;
 
     Button_Run->Enabled = true;
}
//---------------------------------------------------------------------------
 
void __fastcall ListFiles(AnsiString path, TStrings* List)
{
   TSearchRec sr;
   if (FindFirst(path+"*.*",  faAnyFile, sr) == 0)
   {
     do
     {
       if (sr.Attr &  faDirectory)
       {
    if (sr.Name!=".")
       if  (sr.Name!="..")
         ListFiles(path+sr.Name+"\\",List);         }
       else
         List->Add(path+sr.Name);
      }
      while  (FindNext(sr) ==  0);
      FindClose(sr);
   }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2012, 18:55
Ответы с готовыми решениями:

Поиск файлов в отдельном потоке и отображения поиска файлов
Здравствуйте. По факту пока что вопрос один. Как сделать запуска поиска файлов через пару секунд после того как запустилась форма. И уже...

Отображения списка файлов в папке в TreeView
Всем доброго дня! Есть текстовое поле на форме. в него вводиться путь к папке. при нажатии на кнопку в treeview отображается список...

Составить структуру и текст приложения поиска и отображения графических файлов с архитектурой однодокументного интерфейса
Дано задание написать программу. Составить структуру и текст приложения поиска и отображения графических файлов с архитектурой...

5
 Аватар для QWIPQ
144 / 123 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
02.05.2012, 20:48
вот тебе пример с пояснением реализации потоковых часов...
в основной проект надо подключить исполняющий файл потока:
File->New->Other->C++Builder Files->Thread Object
появится чет наподобие Unit2.cpp без формы естественно в него и монтируй свои функции по примеру...
"TimeIz" - в примере это название потока которые ты вводишь при подключении исполняющего файла. Соответственно может быть любое.
Вложения
Тип файла: rar Часы.rar (1,006 байт, 14 просмотров)
0
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 20
02.05.2012, 21:13  [ТС]
Хотелось бы похожего или чуть сложнее примера...
0
 Аватар для QWIPQ
144 / 123 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
02.05.2012, 22:51
вот как-то так, на работоспособность код не проверял... суть таже, работать должен... может быть ток проблема в объявлении переменных глобальных если таковые были
Вложения
Тип файла: rar как-то так.rar (1.6 Кб, 9 просмотров)
1
95 / 64 / 5
Регистрация: 03.07.2011
Сообщений: 148
03.05.2012, 08:36
Привет! Набросал пример - поток перебирает все файлы, начиная с заданной директории, в заголовок главной формы выводя пути. Потом в список вываливает файлы. Пример приаттачил, вот содержимое cpp файла потока :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "UMyThread.h"
#include "UMain.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
 
//   Important: Methods and properties of objects in VCL can only be
//   used in a method called using Synchronize, for example:
//
//      Synchronize(UpdateCaption);
//
//   where UpdateCaption could look like:
//
//      void __fastcall TMyThread::UpdateCaption()
//      {
//        Form1->Caption = "Updated in a thread";
//      }
//---------------------------------------------------------------------------
 
__fastcall TMyThread::TMyThread(bool CreateSuspended)
   : TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall TMyThread::Execute()
{
   slList = new TStringList;
   ListFiles(asPath,slList);
   asCaption = "Ïîèñê çàâåðøåí"; Synchronize(UpdateMainFormCaption);
 
   Synchronize(AddDataOnMainForm);
   delete slList;
}
//---------------------------------------------------------------------------
 
 
void __fastcall TMyThread::ListFiles(AnsiString path, TStrings* List)
{
   TSearchRec sr;
   if (FindFirst(path+"*.*",  faAnyFile, sr) == 0)
   {
     do
     {
       if (sr.Attr &  faDirectory)
       {
    if (sr.Name!=".")
       if (sr.Name!=".."){
         asCaption = path+sr.Name+"\\";
         Synchronize(UpdateMainFormCaption);
         ListFiles(path+sr.Name+"\\",List);         }
       }else
         List->Add(path+sr.Name);
      }
      while  (FindNext(sr) ==  0);
      FindClose(sr);
   }
}
 
//---------------------------------------------------------------------------
 
void __fastcall TMyThread::AddDataOnMainForm(void)
{
   for (int i = 0; i < slList->Count; i++)
      frmMain->lbMain->Items->Add(slList->Strings[i]);
}
 
//---------------------------------------------------------------------------
 
void __fastcall TMyThread::UpdateMainFormCaption(void){
   frmMain->Caption = asCaption; Application->ProcessMessages();
}
Вложения
Тип файла: rar ThreadSample.rar (673.9 Кб, 17 просмотров)
1
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 20
03.05.2012, 18:20  [ТС]
Всем, спасибо, буду разбираться...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.05.2012, 18:20
Помогаю со студенческими работами здесь

Как запустить поток?
Начал учить джава уже как пару недель. Хочу разобраться с потоками но пока ка то туго. Вот набросал генератор луна import...

Как правильно распарсить поток и преобразовать его для отображения в hex виде
Здравствуйте. Подскажите пожалуйста как преобразовать тот поток что читается из любого файла в 16ричный вид. Я нашел пример кое чего...

Как запустить новый поток?
мне надо запустить новый поток как обычно в классе родителя пишу:private Class1 cl; затем после нажатия кнопки пишу : cl.state +=...

Как запустить поток из таймера?
не получается запустить потоки из таймера, при создании потока из кнопки все работает procedure TForm1.Button2Click(Sender: TObject); ...

Как запустить отдельный поток
Как запустить часть кода в отдельном потоке. Пробовал так: public void func (){ this.Invoke((MethodInvoker)delegate(){ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru