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

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

02.05.2012, 18:55. Показов 1417. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru