0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 9
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
TThread и копирование файлов01.03.2013, 13:01. Показов 1654. Ответов 18
Метки нет (Все метки)
Добрый день спецы. Пишу достаточно сложную программу, точнее оптимизирую то, что было написано ранее. Необходимо создать поток который будет забирать данные с нескольких ListBox сортировать их на форме. Начну по порядку. Создал простую форму с FileListBox и полем Memo для вывода.
Поток запускаю на главной форме, скажем, кнопкой:
0
|
01.03.2013, 13:01 | |
Ответы с готовыми решениями:
18
Копирование: Ввод имени папки и копирование из нее файлов Копирование файлов из разных каталогов в каталоги с именами, соответствующими номерам в именах файлов Копирование файлов из одной папки в другую, но с пропуском одинаковых файлов в этих папках Копирование отсутствующих и изменённых файлов по результатам сверки файлов одного каталога с файлами другого |
01.03.2013, 16:49 | 2 | |||||||||||||||
Добавлено через 55 секунд Это как ? И почему нет ?
0
|
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 9
|
||||||
01.03.2013, 21:24 [ТС] | 3 | |||||
С первым вопросом, спасибо за подсказку. Можно повешать на кнопку.
0
|
01.03.2013, 21:31 | 4 |
TThread - это базовый класс а наш класс от него наследуется...
Т.е. и относится мы должны к нему как классу - т.е. можем определять методы и члены класса(поля) в нем ( А инициализировать в его конструкторе, кстати его тоже можно переопределить).
0
|
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 9
|
|
01.03.2013, 22:02 [ТС] | 5 |
Немного не понял. Точнее, что передавать в индекс строки чтобы вывести нужную?
0
|
01.03.2013, 22:13 | 6 | |||||
Ну так сделай n членом класса потока в чем проблема ?
Сразу не углядел
1
|
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 9
|
|||||||||||
02.03.2013, 11:43 [ТС] | 7 | ||||||||||
Здравствуйте.
Не понял почему? С переменно разобрался. Спасибо огромное.
Есть еще проблема с которой не пойму как быть. На форме хочу использовать компонент PageControl. Во вкладках располагать ListBox`ы Memo и т.д. Проблема: не получается выполнить поток повторно. При повторном вызове потока вылазит окошко "Thread Error: Неверный дескриптор (6)" Такое происходит только на компоненте PageControl и только при повторном вызове. Добавлено через 1 час 36 минут Прошу прощения, за столь глупые вопросы. С последним разобрался. Остается в принципе один важный вопрос, как проверить завершился ли поток? Допустим кнопка выполняет запуск потока, а дальше как отследить, что он завершен, а затем продолжить выполнение следующих действий?
0
|
02.03.2013, 16:02 | 9 | |||||
В
Добавлено через 2 минуты Самое простое блокировать кнопку, а потоке ее разблокировать в деструкторе ( естественно с синхронизацией) А вообще Определить состояние потока TThread Можно конечно создать в потоке свойство которое будет говорить об окончании и при использовать FreeOnTerminate= false, и поток удалять вручную ...
0
|
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 9
|
|
02.03.2013, 23:55 [ТС] | 10 |
Спасибо ребята за поддержку. Более менее разобрался. Хотел спросить, синхронизация нужна во всех случаях чтение записи данных на форме? Если в потоке цикл пытается получить кол-во строк в ListBox например, при этом синхронизация не нужна?
0
|
03.03.2013, 00:02 | 11 |
Везде где участвует перерисовка окна...
Скорее всего нужно вдруг в этот момент пользователь решит удалить или добавить строку ? Теоретически если только читать то можно без синхронизации, но для этого нужно быть уверенным что во внутренних "механизмах" VCL происходит только чтение ...
1
|
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 9
|
||||||
03.03.2013, 13:34 [ТС] | 12 | |||||
Столкнулся с проблемой ожидания завершения потока на форме. Как бы сделать так, что когда поток закончен вылезла табличка?
0
|
03.03.2013, 15:56 | 13 |
Правильно в самом потоке взвать ShowMessage() перед самым выходом из Execute() ( но стоит заметить что поток не закончится по как вы не нажмете в ShowMessage "OK" ).
0
|
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 9
|
||||||
05.03.2013, 16:56 [ТС] | 14 | |||||
Разобрался. То что мне нужно было реализовал до половины.
Теперь вот, как быть с рекурсивным вызовом функций?
0
|
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 9
|
||||||
05.03.2013, 18:22 [ТС] | 16 | |||||
Честно - не помню. т.к. сейчас интересно, как сделать рекурсивную функцию в потоке. Ничего сообразить не могу. Че-то не то написал
0
|
05.03.2013, 19:43 | 17 | ||||||||||
А в чем проблема то ? сделай её методом класса потока из него синхронизировано вызывай другой метод который и будет делать :
0
|
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 9
|
||||||
06.03.2013, 13:08 [ТС] | 18 | |||||
Проблема в этом:
Корневой каталог |-> Подкаталог1 |->Подкаталог подкаталога1
0
|
07.03.2013, 15:10 | 19 |
0
|
07.03.2013, 15:10 | |
07.03.2013, 15:10 | |
Помогаю со студенческими работами здесь
19
Копирование файлов с FTP-сервера на компьютеры клиентов без замены уже имеющихся файлов Копирование файлов с переименованием в случае совпадения имён перемещаемых и имеющихся в папке назначения файлов Копирование файлов с переименованием в случае совпадения имён копируемых и имеющихся в папке назначения файлов Копирование файлов по списку в текстовом файле в папки с именами, соответствующими расширениям этих файлов Копирование файлов в нужные папки, исходя из имён файлов Добавление префиксов к именам файлов и копирование файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |