![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Всем привет!!!!!!!!!!!!
У меня такой вопрос - как можно загнать в отдельный поток определенное действие?? например: мне нужно загнать цикл try begin Yield; application.ProcessMessages; ........... except ............. finally ............... end; в потоки как это сделать и как определить количество потоков???? программа просто очень виснет и очень медлено выполняет действия ((((((((((( а с потоками я не рабтал кто может мне объяснить популярно как загнать все это в поток????? Заранее благодарю!!!!!!!!! |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Вот самый простой пример. Причем без использования класса TTread.
Это сообщение отредактировал(а) Poseidon - 15.1.2006, 03:46 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
2 Poseidon ,
спасибо, за ответ!!!!!!!! а как определить кол-во потоков???? к пример усделать 100 потоков чтоб за один раз 100 циклов прошло????? |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Экстремал
но вариант не идеален. И более того, я бы для твоей задачи все же воспользовался бы TThread. Там хоть синхролизировать можно потоки. Хотя и этот вариант может прокатить -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
||||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
2 Poseydon
2 FRAGNATIC http://forum.vingrad.ru/index.php?showtopic=60076 Отличный материал!!!!! Спасибо!!!!!!!!!! |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
при выполнении в отдельном потоке на этой строчке могут возникать ошибки.... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
2 Albinos_x
А как лучше сделать чтоб прога не тормазила???? |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
так если ты запустишь это в отдельном потоке, то она и так тормозить не будет ... поэтому эта строчка автомарически должна отпасть... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Barovskiy |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
у меня не компилируется ((((((
внутри цикла я обращаюсь к компонентам например
как мне можно работать с компонентами внутри процедуры??? в цикле идет счет выполненых операций....
вобщем ругается на все компоненты (((((((( как это лечить ?????? |
||||||
|
|||||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
ты должен указать "чей компанент":
но здесь тоже могут возникать глюки... здесь лучше делать:
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| Barovskiy |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
я сделал так
скопилилось почти нормально за исключением [Warning] Unit1.pas(126): Variable 'Label6' might not have been initialized прога запускается нормально, но как только нажимаю на кнопку для пуска потока - Вылетает ошибка что какой то кусок памяти не может быть рид .... как мне инициализировать - указать чей компонент ???? |
||||
|
|||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
А как ты создаёшь этот:
var RxLabel6: TRxLabel; ? -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
||||
|
||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
nil те надо var Label6: TLabel; ... begin label6:=TLabel.Create(nil); Это сообщение отредактировал(а) FRAGNATIC - 15.1.2006, 19:16 |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Я сдела так
компилируется но не работает ((((((((((((((((((((((( тоычнее начинает работать ... а потом вылетает ошибка (((( |
|||
|
||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
мой пост предыдущий читай=)
|
|||
|
||||
| Barovskiy |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
ты имеешь ввиду все что я вписал в раздел var необходимо создать и в разделе begin?
что типа того? |
||||||
|
|||||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
если ты не кидал на форму не опендиалога не мемо а тока обхявил в вар то их надо СОЗДАТь перед тем как к ним оброщатся=) если ты кинул их на форму то их и объявлять в вар не надо=) Добавлено @ 19:53 а в finally надо освободить память типа label6.Free |
|||
|
||||
| Barovskiy |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
у меня все на форме лежит и опендиалог и мемо .... делаю так - компилирует, но когда нажимаю на кнопку запуска потока, то он вообще не реагирует, как будто у меня в кнопке ничего не прописано ((((( сама процедура выглядит типа так
а код вызов процедуры так
никакой реакции у меня даже кнопока остается активной, хотя в процедуре прописано Button1.enabled:=false; ((((( Добавлено @ 20:15
Память в конце обязательно освобождаю, с самого начала )))) |
||||||
|
|||||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
||||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
всеравно не работает ((((( уже пробовал все компилируется а работать не хочет ..... есть ли какойнибудь пример на эту тему, рабочий пример ???... или всетаки попробовать через TThreads сделать? |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
мы тут не телепаты... код покажи... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
какого начала? финали это уже конец =) не нравится так освобожда в другом месте тока ОДНО НО любые переменые объявленые в ВАР любой из функций, процедуры являются локальными и уничтожаются в конце выполнения этой процедуры тоесть после твоего end; Memo1 и так уже существовать не будет=) так что если хош с ними работать и дальше где-то то надо их сделать глобальными перемеными а не локальными чисто для данной процедуры Добавлено @ 22:17 гы в том коде что я ща процетировал у тя ваще переменых нету выще они были в этойже ф-е) |
|||
|
||||
| Barovskiy |
|
||||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Я имел ввиду ссамого начала создания самого проекта , гы .... ))))))))
Щас попробую обяснить что я хочу сделать и че получается:-)))) У меня была фрома, на ней компонены, мемо , опендиалог, лейблы ... логмемо, кнопки старт стоп в общем все компоненты которые нужны я выбираю в опен диалог текстовый файл в котором у меня ip адреса и мне надо получить их имена, у нас в сетке больше 120 компов, и мне нада составить список какой ip кому принадлежит .... при нажатии на кнопку у меня запускается цикл ... и пока не конец файла он проверяет все ip, т.е. читает строку в файле пингует его возвращает ответ в log так вся эта бадяга виснет ... и очень долго идет проверка, поэтому я хочу вогнать этот кусок проверки в поток ..... вот кусок того что было
потом как мне отпостили выше я переделал в такой вариант
ну самf кнопка, которая вызывает поток
так в этом варианте все компилится и даже запускается сама программа, нажимаю на пуск - ноль эмоций.... хотя после создания все компонентов идет
кнопка так и остается доступной.... а если вырубить прогу... то такое начинается... Добавлено @ 23:33
Я их убрал из вара |
||||||||||||||
|
|||||||||||||||
| Albinos_x |
|
||||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
это скорее всего из-за: компаненты уже существуют, поэтому генерируется ошибка, код завершается без обработки:
т.к. блок try идёт после...
выкинь нафиг эту строку наконец... в потоке будет генерироваться ошибка... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||||
|
|||||||
| Barovskiy |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
эту фигню я уже выкинул .... просто код скопировал со старой версии .. . а в потоке ее нету уже..... Добавлено @ 00:36
я убрал все.............. и при нажатии на кпопку вылетает ошибка после чего прога закрывается..... |
||||
|
|||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
вот тебе простенький пример(который у меня работает):
запуск:
т.к. это пример поэтому расписывать написанные и используемые мной функции не стал Это сообщение отредактировал(а) Albinos_x - 16.1.2006, 00:45 -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| Barovskiy |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
вот так везде поставил
указал пренадлежность каждого компонента.... убрал из вара и все вот это вывалшивает ошибку ((((((( не хочет запускать поток ((((((((( |
||||
|
|||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
что говорит пошаговая отладка? на какой строчке ошибка? -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Отладка виснет как только нажимаю на кнопку старт ... дельфи умирает просто ..... (((((( ВОт ошибки The exception unknown software exception (0x0eedfade) occured at location 0x77e738b2 System Error. Code 1400 Invalid window handle наверное я сегодня забыл руки с зада вытащить и поставить их в плечи.... |
|||
|
||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
ищи где даёшь неправильный хандле...
а через F7? -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Access violation at address 00493E11 in module 'IptoName.exe'. Read of address 00000000
вот еще |
|||
|
||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
ну мне это толком ничего не говорит... я не видел кода... и не знаю на каких строчках вылетает ошибка... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| Barovskiy |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
даже и не знаю где это может быть (((((((((((( все правильно вродебы..... Добавлено @ 01:46 Сделал так на кнопке
выволилось вот это Connection close gracesfull F7 тоже не получается Это сообщение отредактировал(а) Barovskiy - 16.1.2006, 01:48 |
||||
|
|||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
а как тебе писали не пробовал?
Добавлено @ 02:12 посмотри ещё здесь -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
||||
|
||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
что не получается? на какой строчке? Добавлено @ 02:17
смотри событие OnFormCreate() -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| Barovskiy |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Спасибо!!! буду смотреть ! кажись разобрался.... точнее не разобрался пока еще, я переписал все заного и у меня заработало!!!!! в чем я допустил ошибку пока не знаю ... но факт что работает!!!! прога не виснет все делает нормально!!!!!!!!! НО после того как все сделано и я закрываю прогу опять выпригивает ошибка The exception unknown software exception (0x0eedfade) occured at location 0x77e738b2 System Error. Code 1400 Invalid window handle По крайней мере уже легче!!!!!!!!!!!!!! Добавлено @ 02:34
у меня там ничего нету пусто ошибка вылетает если я хоть раз нажал на кнопку а если открыть и закрыть то ничего не выскакивает .... это в потоке чтото происходит..... отладчик вообще не хочет работать.... виснет ужасно ... |
||||
|
|||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Хм... как всё запущено.
Документацию и статьи, видимо, не полностью прочитаны или невнимательно. Пока будешь использовать VCL в доп. потоке без синхронизации, так и будут у тебя ошибки при выполнении. Ни один из приведенных примеров нормально также не избавлен от этих ошибок. Кроме того, нужно использовать не CreateThread, а BeginThread, либо самому добавлять строку IsMultiThread := TRUE; -------------------- |
|||
|
||||
| Guest |
|
||||
|
Unregistered |
Читал я полностью, возможно не внимательно... я все заного перепроверю... Каким образом мне сделать синхронизацию VCL ????
Поставил CreateThreads - таже ошибка вылетает просле закрытия прогрммы... Где необходимо вписать IsMultiThread := TRUE; ???? |
||||
|
|||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Guest
Сформулируй, пожалуйста, требования к программе по порядку. Не надо с конкретным кодом. ПРосто словами - что она должна делать, как отображать данные. В таком длинном топике уже все разнесено по всему треду, и не найдешь, что же конкретно нужно сделать. -------------------- |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Для синхронизации с VCL надежно работает метод Synchronize
Класса Thread - это самый простой способ если синхронизация происходит достаточно редко. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Демо
Предыдущий пост был моим, не вошел под пользователем.... ((((((( Дело вот в чем - открываю программу, в опендиалог выбираю текстовый файл в котором прописаны IP адреса моей локалки, загружаю в прогу, и пока не конец файла прога читает строчку в файле, пингует IP адрес, возвращает ответ с именем компа записывает в текствоый файл, плюс весь лог подключений(всех действий) записывается в log.txt Работало все нормально, только жутко все висло, сделал поток и всё событие кнопки старт перенес в поток, а в кнопке страт указал создание потока. Работает, но после того как прога закрывается то вылетает ошибка. Отладчик не пашет вообще, виснет по страшному, кода я нажимаю старт (((( и не возможно посмотреть на какой строчке И еще вопрос - как сделать не один поток а несколько??? к примеру 10 чтоб за один раз создавало 10 отдельных потоков? for i:=0 to 10 do ... не работает ... вылетает тоже ошибка. Добавлено @ 13:10
а пример можно ??? как это правильней сделать??? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Вероятно неверно завершается поток -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
||||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
никак. поставь FreeOnTerminate в true и он сам остановится
Добавлено @ 13:39 точнее умрет -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
я не очень понял какой вариант использования потоков используется.
Если Делфийский то вызов Terminate затем ожидание завершения Waitfor затем освобождение памяти. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Barovskiy |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
сделал так
все равно вылетает
У меня дельфийский медот Можно какойнить пример??? я не совсем понимаю куда писать |
||||||
|
|||||||
| Guedda |
|
||||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Поставь FreeOnTerminate в начале кода.
Т.е.:
И еще, когда создаешь поток (может это уже было написано, но я повторю), нужно делать вот так:
-------------------- Ll 2 |
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
а это:
зачем? FreeOnTerminate это свойствр класса TThread... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Добавлено @ 14:15 Кроме того в потоке нужно перодически проверять свойстро terminated если оно true то закончить работу потоковой процедуры.(выйти) -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Barovskiy |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Выкладываю код ... у меня едит крыша, я совсем запутался.... (((((((((
а вот сама кнопка
все работает, но вылетает ошибка когда закрываю прогу.... вот исходник, что я там не так сделал???? у меня уже голова кругом идет ((((( |
||||
|
|||||
| Демо |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Можешь использовать как шаблон для реализации своего потока вот этот код:
Пример использования:
Заодно можешь вот этот топик почитать: http://forum.sources.ru/index.php?showtopic=120033 -------------------- |
||||
|
|||||
| Alexeis |
|
||||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
так делать нельзя класс TThread абстрактный нужно делать наследдника и прекрыть execute вот пример:
код ChekIp поместить в Execute а вот это
создает целых два потока различными методами Это сообщение отредактировал(а) alexeis1 - 16.1.2006, 15:32 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||||
|
|||||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
я не знаю как ты там пинингуешь, но не думал о том что на один порт хочешь послать инфу с 10 потоков?... И читать из одного файла 10 потоками... 9 из них сразу же обрушатся (это конечно симотря как читаешь)... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Barovskiy |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Спасибо, буду разбираться
у меня в примере нету этого .... все равно вылетает ... Как вот мне мой код оптимизировать чтоб нормально было ... и потоков много было .... мне мой код ктонибуль может показать что исправить по конкретнее.... Добавлено @ 15:51 так и есть .... читаю одну строку ... а остальные просто рушаться... и опять ошибка... может менять порты при создании трейда???? |
||||
|
|||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Barovskiy
Выложи код, который используешь для пингования конкретного хоста, попробую помочь... -------------------- |
|||
|
||||
| Barovskiy |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Демо
Вот функиции
а вот что в цикле
|
||||||
|
|||||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
тогда без Class(TThread) и синхронизации не обойтись -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Пожалуйста, кто по умнее меня приведите прример по моему примеру....
плиззззззззз....... совсем уже башню сносит как сделать поток нормальным способом а не через ... как у меня ... и чтоб можно было задавать определенное количество потоков ..... хотябы внутри программы ... от и до если можно .... самые главные определяющие места ..... Пожалуйста... В аналогичных примерах я поглядел, но так и не понял как все этоприменить к моему примеру |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Barovskiy
Т.е., судя по коду, ты хочешь просто получить имя компьютера из DNS, неважно, включен он или нет? -------------------- |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
alexeis1
Танкс за пример!!!! Я сейчас заного попробую.... свои действия мне вставлять сюда ???
а как настчет VCL компонентов??? итли мне сделать принадлежность каждого компонента???? |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
да...
через синхронизацию работать с ними... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
||||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
у тебя практически все действия с компанентами... так что надо вызывать твои процедуры через метод Synchronize(...); -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Действия лучше вставлять чуть ниже после первого end;
а вот синхронизация
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Демо |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Могу для твоей задачи предложить вот такое решение. Количество потоков не учитывается, но думаю, что сам доделаешь.
Модуль с потоком
Пример использования
Это сообщение отредактировал(а) Демо - 16.1.2006, 21:01 -------------------- |
||||
|
|||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
alexeis1
На твоем примере вродебы как получилось - НО он прверяет один и тот же адрес два раза, примеру если у меня в локалке 100 адрессов, то он пишет что их 200 а потом один и тотоже проверяет два раза... а не каждый поток следующий адрес.... Добавлено @ 01:24 и после вырубления проги все равно вылетает ошибка..... Может вовсе не надо делать эти потоки.. у мен якрыша уже едит ... может хотябы сделать так чтоб прога ошибку не выплевывала..... Добавлено @ 01:31 Демо
Большое спасибо за пример!!!!! а можно ли чтонибудь попробовать именно через мой пример??? Просто твой не много не подходит ... я бы хотел его потом еще приминить в другие примеры чтоб просто поменять внутренности цикла и прога готова для другово :-) что скажешь ??? можешь помочь накидать пример , просто с пустым циклом выполнения... тогда поток будет универсален практически для всего ..... и для использования VCL и для внутреннего создание компонентов.... мне кажется это вариант хороший.... иметь заготовку куда просто можно впихнуть действия |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
не для конкретной проверки IP адресов, а вообще, для всего где может понадобиться потоки ...
даже не знаю что можно придумать, - все что угодно, Что скажите, мастера???? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Barovskiy приведи текст ошибки
Добавлено @ 10:13 Может ошибка не в потоке -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Может ты в потоке вызываешь MessageDlg or ShowMessage?
Опиши подробнее ошибку. -------------------- Ll 2 |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
OnClose
или OnDestroy обрабатываешь? у меня такое же ощущение... возможно неправильно где-то ещё выделяет память или освобождает... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
В общем, выложи код, которым вызываешь, и код самого потока.
-------------------- Ll 2 |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Здесь у меня ничего не обрабатывается
тоже ничего нету Может быть вылетает шибка из-за того что я делаю запись всего лога в текстовый файл????? Хотя не должно быть ... А вот сама ошибка ![]() Главное выпригивает послето того как пройдет весь цикл если просто открыть и закрыть прогу то ничего не выпригивает Сейчас выложу все Это сообщение отредактировал(а) Barovskiy - 17.1.2006, 12:51 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Почему бы не попробовать найти ошибку трасировкой F7, F8
Добавлено @ 12:58 или накидать брекпоинтов -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Barovskiy |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
код потока
Вот сам вызов потока
и все.... работает в отдельном потоке, прога не виснет все нормально, но после того как закончилась работа и закрываю саму прогу то вылетает ошибка.... воть ... Добавлено @ 13:34
Я уже пробовал .... меня дельфи зависает намертво как только я запускаю поток и через 20 минут мне приходится уже через диспечера валить и дельфи и прилажение ... |
||||||
|
|||||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
У тебя какие-то проблемы с хендлом какого-то окна.
Скорее всего, при работе программы, она теряет свой собственный хэндл. Вопрос: Зачем тебе нужны потоки? Ответь, пожалуйста, по существу. -------------------- Ll 2 |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
А если эту ф-цию запустить без потока, тож ошибка?
ЗЫ Мож быть целая пачка ошибок, если из потока без дополнительных движений, обращатся к форме! -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Поток нужен чтоб прога не висла, и я хотел чтоб одну работу прога выполняла несколькими потоками. Я так понял мне несколько потоков не получится сделать, или надо весь код заного переделывать... Ходябы избавиться от этой ошибки хендла ....
Если весь код поместить на кнопку то никаких ошибок не вылетает, но все виснет, хотя и работает. как только перевожу весь код в отдельную процедуру и кнопкой создаю поток то тоже все арботает и прога не виснет, но после закрытия проги вылетает эта ошибка впринцепи она мне не портит работу, но хочется чтоб было все четко и разобраться почему она вылетает ... |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Тебе же сказали, что если будешь обращаться к VCL из потока, от ошибок не избавишься. -------------------- |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Сделай через Tthread, раздели часть где берутся данные с формы и ставятся, и на часть где идет обработка данных, где идет обращение к форме, засунь в синхронизм, только болько не пользуйся , потому как тогда смысл от отдельного потока никакой
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Да. Вот нашел в книжке.
-------------------- Ll 2 |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
И еще почитай http://forum.vingrad.ru/index.php?showtopic=60076 это очень помогает!
Добавлено @ 14:36 Можно , но для этого надо делать дополнительные телодвижения -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Barovskiy с F7 и у меня были проблемы но при использовании
брекпоинтов (ставлю кучу) и F4 для перескока между ними удавалось отладить без зависания ( т.е. первую точку прошел - снимаем, вторую и т.д.) Это сообщение отредактировал(а) alexeis1 - 17.1.2006, 14:52 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
||||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Это всего лишь цитата из учебника. Я лишь цитирую. Но и придерживаюсь этого мнения. Если треды не сильно нужны, то лучше ProcessMessages использовать. -------------------- Ll 2 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
а по подробней -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Дело каждого свое -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
А из API-Thread у тебя и не получится синхронизировать. Только если использовать синхронизацию метоодом посылки сообщений. -------------------- |
|||
|
||||
| Barovskiy |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Они нужны так как ProcessMessages совершенно не спасает .... и плюс я бы хотел чтоб за один раз несколько потоков было .... тогда задача еще быстрее будет выполняться
Обязательно почитаю сейчас А как же тогда быть если не управлять VCL |
||||
|
|||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
или создавать класс Thread или синхрогизировать через посылку сооьщений
можно в критических местах расставить мессажебоксы и по их появлениям отследить выполнение кода... соответственно если какойто не показался, хотя долже был... значит где-то перед ним возникла ошибка... Добавлено @ 18:21 [яуоте] если просто открыть и закрыть прогу то ничего не выпригивает [/яуоте] а если досрочно прервать выполнение, ошибка вылетает? -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Чем пример не подходит? Дело в том, что потоки пишутся под задачу, и универсальный шаблон сделать нельзя. Универсальный уже есть - File-->New-->Other-->Thread Object. Но это естественно, только лишь самая примитивная заготовка. -------------------- |
|||
|
||||
| Barovskiy |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Все проходит гладко, в процессе работы, все логи я сохраняю в лог лист alexeis1 в коде все нормально проходит .... а вот как закрываю прогу .... бац АшыПка ..... Может я чтото упусти л.....
Синхронизация не получается потому что не очень разбираюсь в потоках и если я сейчас начну создавать отдельный модуль пас с потоком то потом как мне склеить VCL ? я не смогу разбить VCL Саму связь и управление не смогу сделать - уже пробовал не получилось, поэтому я хотел загнать сам цикл в поток в принцепи получилось, но вот меня напрягает сама ошибка после выхода прграммы, это не граммотрно чтото я сделал ... многопоточность у меня не получится сделать таким образом... ну хотябы одним потоком чтоб прога не висла и без ошибок. Может это у меня ошибка в самом цикле???? чтоя мог такого написать с VCL что вылетает инвалид хэндл при закрытии проги???? может чтото еще надо вписать в раздел
????? С Вуажением, БагМэйкер )))))))))))) |
||||
|
|||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Твой пример Супер!!!!!! Просто помимо проверки IP я хочу туда засунуть другие возможности .... Например загнать прогу в трей и чтоб она проверяла все мои почтовые ящики одним заходом, и выводила мне колличество мои писем.... а если я сейчас загоню это, то мне придется для каждого почтового ящика вешать по одному ПОП компоненту, а если у меня ящиков 10 ... это будет конечно труба.... вот я и хотел повесить один компонент поп и через порверять одним заходом все ящики из настроек .... поэтому я хотел сделать общую заготовку чтоб просто поотом менять содержание цикла и все.... Не получилось ... хотя уверен что можно это сделать, но пока у меня не хватает опыта ..... хотябы примитивные задачи ..... Прерываю - все нормально останавливается, а если закрою - то тоже самое вылетает, ошибка вылетает в любом случае после закрытия прграммы если я хоть раз запускал цикл проблема скорей всего с синхронизацией VCL - но как мне ее сделать не понимаю, в примерах теряюсь, так как понятия не имею что куда писать :-( |
|||
|
||||
| Демо |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Для каждого варианта тебе придется решать свои задачи и проблемы для многопоточного программирования. Общие рецепты слишком общий, чтобы можно было одно решение приспособить для любой задачи. Многопоточное программирование не так уж и сложно, но перед кдированием сложных задач все равно придется разобраться подробно в этой теме. Даже с готовой библиотекой - все равно придется разбираться.
К сожалению, сайт уже не работает. Библиотеку можешь взять вот здесь: ftp://ftp.almar.net.ru/pub/GalaLib.zip -------------------- |
||||
|
|||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Демо
Спасибо за пример!!!!!!!!!!!!!!!!!! Супер!!!!!!!!!! буду разбираться с ним, можеь что получится!!!!!!!!!! |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Кажетсяы вот из-за этого вылетает ошибка при закрытии программы
|
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
врят ли, если до этого ошибки не возникли...
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
except это уже обработка
ошибка возникает между try и except -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Но там все нормально .... Почему, если поставить все действие просот на кнопку то все нормально, программа закрывается без ошибки ((((( как записываю в поток то после закрытия проги вылетает ошибка The exception unknown software exception (0x0eedfade) occurred in the application at location 0x781eb33 а после нее вылетает та ошибка которую я выкладывал раньше exception - и мне кажется что из-за этого .... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
А если запустить тот же поток но с другим действием скажем
for от 1 до 100000000 - ошибка повторится. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Просто напросто поток не успевает выгрузиться. Попробуй ставить проверку на выгрузку потока. -------------------- Ll 2 |
|||
|
||||
| Barovskiy |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
У меня цикл - если не конец файла....
как его выгрузить тогда? И как поставить проверку? поток создаю так на нем остановился, так как не вылетает ошибок кроме последней...
Это сообщение отредактировал(а) Barovskiy - 19.1.2006, 00:14 |
||||||
|
|||||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Здесь вылетает ошибка что кончился стринг файл и нечего проверять ..... Ели успокоил программу.... )))))))))))))))) Это сообщение отредактировал(а) Barovskiy - 19.1.2006, 00:28 |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
попробуй в конце потока выйти из него командой:
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Сделал так... всеравно вылетает ((((( |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Albinos_x
ОГРОНОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!
Сделал вот так и все заработало!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ОГРОНОЕ СПАСИБО ВСЕМ КТО МНЕ ПОМОГАЛ!!!!!!!!!!!!!!!!!! Я ОЧЕНЬ ВСЕМ ВАМ БЛАГОДАРЕН ЗА ВАШУ ПОМОЩЬ!!!!!!!!!!!!!!!! Добавлено @ 02:04 Но тут же возникает другой вопрос :-) Как из этого примера сделать многопоточность? ведь это только работает в один поток и с одноим циклом, а если заставить его делать этот цикл в двух потоках сразу, или еще больше из преложенных мне ВАМИ ссылок я нашел вот этот пример http://forum.vingrad.ru/index.php?showtopi...&hl=threads :-) или придется делать по другому ? |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Поправка
Прога остается висеть в памяти, не закрывается...... ((((((((((((( |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Кажется меня осенило как можно сделать многопоточность в моем случае .....
позже напишу как я задумал, надеюсь получится.... |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
странно что у тебя это не работает..
Это сообщение отредактировал(а) Girder - 21.1.2006, 00:06 -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
Albinos_x
Работает только если я ставлю ExitThread(0); когда программа закрывается... онклоус но прога из памяти не выгружается ... продолжает висеть в процессах ... |
|||
|
||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
в любом случае вариант
будет вызывать ошибку, т.к. 2 раза закрыть закрыть одно и тоже нельзя...а в этом варианте темболее закрываешь не из потока... программа просто скрывается и виснет... если хочешь закрывать не из потока, то наверно лучше его убить командой:
где H - HANDLE созданного тобой потока... Это сообщение отредактировал(а) Girder - 21.1.2006, 00:06 -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| Barovskiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 15.1.2006 Репутация: нет Всего: нет |
сделал так TerminateThread(ChekIP,0); не компилирует , выдал вот это [Error] Unit1.pas(370): Incompatible types: 'Cardinal' and 'procedure, untyped pointer or untyped parameter' что вмето 0 поставить? |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
1. Вообще-то, дескриптор(Handle) потока у тебя возвращает функция BeginThread, который ты не запоминаешь нигде.
2. TerminateThread - аварийное завершение потока. А нужно ли? 3. Как выше было написано, проще сделать нормальную синхронизацию, а не заниматься садомазохизмом через одно место. 4. Если можешь выслать мне свою программу, высылай - посмотрю, что можно сделать. Тогда стучи в PM. -------------------- |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |