![]() |
|
|
#1
|
|||
|
|||
|
Всем привет, пытаюсь прикрутить поток в мониторинг 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 Заранее благодарен. Последний раз редактировалось Deadwoolf, 13.12.2017 в 05:39. |
|
#2
|
|||
|
|||
|
Показывай весь код. Походу, форма у тебя называется подругому, поэтому form1 не инициавлизированна, вот и валится. Мне не понятно как компилиться вот это:
Код:
MyComponent := TRadiobutton('Radiobutton'+inttostr(SUI)); |
|
#3
|
|||
|
|||
|
форма называется Form1
компилируются все. но на шаге изменения цвета - валиться пробовал сделать новое приложение с одной кнопкой и 2 ip адресами на этом же коде все работает .. в когда его запиливаю в пилотный проект получаю аксэс виалатион. может пробовать изменить цвет с помощью постмесадж ? а еще может есть идея как перебирать все радиобатаны, коих у меня 120+ и менять цвет по очереди, в зависимости от онлайн\оффлайн ? благодарю за ответ. а по поводу кода -собственно больше показывать нечего все что связано с потоком и перебором уже указал... |
|
#4
|
|||
|
|||
|
Перебирать довольно просто.
Код:
var
rb : TRadioButton;
begin
rb := Form1.FindComponent('RadioButton'+IntToStr(Nmb)) As TRadioButton;Вообще, Access Violation обычно означает обращение к не созданному объекту. Вот поэтому я и говорю, что у тебя в коде что-то не так. Ну и еще один момент. Обновлять состояние компонентов из др потока (отличного от главного потока) надо через Synchronize. |