|
#1
|
|||
|
|||
ping пк в потоке
Всем привет, пытаюсь прикрутить поток в мониторинг ip адресов
собственно выдает ошибку вот в этом коде: Код:
procedure TMyThread.UpdateCaption; var IdIcmpClient: TIdIcmpClient; Mycomponent:Tcomponent; ip:string; begin ip:='192.168.0.1'; SUI:=2; while SUI <>4 do begin IdIcmpClient:=TIdIcmpClient.Create(nil); try IdIcmpClient.Host:=ip; IdIcmpClient.Ping(); MyComponent := TRadiobutton('Radiobutton'+inttostr(SUI)); if MyComponent <> nil then if idICMPClient.ReplyStatus.BytesReceived <> 0 then begin form1.RadioButton2.Color:=CLlime; //тут пробовал по разному end else begin Tradiobutton(Mycomponent).Color:=CLRED; end; Tradiobutton(Mycomponent).Hint:=IdIcmpClient.Host; Tradiobutton(Mycomponent).ShowHint:=true; SUI:=SUI+1; if SUI =3 then ip:='192.168.0.2'; if SUI =4 then finally но так как с потоками не сталкивался - у меня недоумение, ругается на строчку с изменением цвета. ошибка чтения памяти delphi 7 Заранее благодарен. atd9890882822f0 Последний раз редактировалось Deadwoolf, 13.12.2017 в 05:39. |
#2
|
|||
|
|||
Показывай весь код. Походу, форма у тебя называется подругому, поэтому form1 не инициавлизированна, вот и валится. Мне не понятно как компилиться вот это:
Код:
MyComponent := TRadiobutton('Radiobutton'+inttostr(SUI)); |
#3
|
|||
|
|||
форма называется Form1
компилируются все. но на шаге изменения цвета - валиться пробовал сделать новое приложение с одной кнопкой и 2 ip адресами на этом же коде все работает .. в когда его запиливаю в пилотный проект получаю аксэс виалатион. может пробовать изменить цвет с помощью постмесадж ? а еще может есть идея как перебирать все радиобатаны, коих у меня 120+ и менять цвет по очереди, в зависимости от онлайн\оффлайн ? благодарю за ответ. а по поводу кода -собственно больше показывать нечего все что связано с потоком и перебором уже указал... atd9890882822f0 |
#4
|
|||
|
|||
Перебирать довольно просто.
Код:
var rb : TRadioButton; begin rb := Form1.FindComponent('RadioButton'+IntToStr(Nmb)) As TRadioButton; Вообще, Access Violation обычно означает обращение к не созданному объекту. Вот поэтому я и говорю, что у тебя в коде что-то не так. Ну и еще один момент. Обновлять состояние компонентов из др потока (отличного от главного потока) надо через Synchronize. |