Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2015, 13:53   #31
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

вот
Код:
procedure TMyThread.Execute;
var
PostData:TStringList;
begin
PostData:=TStringList.Create;                                    //      отправка на сервер запроса на доступность сайта
PostData.Clear;
PostData.Add(AnsiToUTF8('1'));                                      //Здесь описывается код, который будет выполняться в потоке
while not Terminated do
begin
html1:=Form1.IdHTTP1.Post('http://www.site.ru');
sleep(2000);
end;
end;
lord24 вне форума Ответить с цитированием
Старый 19.11.2015, 14:06   #32
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

всё непрвильно
поток не должен знать ни о каких формах
come-on вне форума Ответить с цитированием
Старый 19.11.2015, 16:04   #33
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

А по подробнее...
Так ведь тоже работает.
lord24 вне форума Ответить с цитированием
Старый 19.11.2015, 16:09   #34
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А по подробнее...
IdHTTP1 нужно создавать внутри потока, а не обращаться к компоненту формы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2015, 16:14   #35
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
Так ведь тоже работает.
Это просто везет, но когда нибудь не повезет и устанешь искать проблему.
come-on вне форума Ответить с цитированием
Старый 23.11.2015, 08:00   #36
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

Простите что долго, но вот...
Если делаю так
Код:
procedure TMyThread.Execute;
var
PostData:TStringList;
IdHTTP2: TIdHTTP;
begin
PostData:=TStringList.Create;                                    //      отправка на сервер запроса на доступность сайта
PostData.Clear;
PostData.Add(AnsiToUTF8('1'));                                      //Здесь описывается код, который будет выполняться в потоке
while not Terminated do
begin
html1:=IdHTTP2.Post('http://www.Site.ru',PostData);
sleep(2000);
end;
end;
то получается следующая ошибка

Получается, что как бы не отправляет или не получает, хотя если на прямую в скрипт отправить запрос, то ответ верный приходит.

Последний раз редактировалось lord24; 23.11.2015 в 08:04.
lord24 вне форума Ответить с цитированием
Старый 23.11.2015, 10:14   #37
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

IdHTTP2 не создан.
Код:
procedure TMyThread.Execute;
var
...
begin
 IdHTTP2:=TIdHTTP.Create(nil);
...
while not Terminated do
begin
html1:=IdHTTP2.Post('http://www.Site.ru',PostData);
sleep(2000);
end;
...
IdHTTP2.Free; IdHTTP2:=nil;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2015, 15:43   #38
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

Странно, но тормоза не пропали. Если взять за окно программы и водить им по раб. столу, то тормозит на 4 сек и отпускает.
Вот код в таймере
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
s:string;
PostData:TStringList;
begin
 if Html1='1' then //сайт доступен
  begin
 MyThread.Suspend;
 PostData:=TStringList.Create;                                    
 PostData.Clear;
 html2:=IdHTTP1.Post('http://www.Site.ru,PostData);   
 s:=html2;
   label15.Caption:=s;
 Sleep(2000);
 MyThread.Resume;
 end else begin
 //сайт не доступен продолжаем работу с программой
 Timer1.enabled:=false;
 If MessageDlg('Нет соединения с сайтом! Продолжить без соединения?'+ html3,mtConfirmation, [mbYes,mbNo],0)=mrYes then
  begin
  MyThread.Terminate;
  Timer1.enabled:=false;
  end else begin
  Application.Terminate;
  end;
 end;
end;
Если сайт доступен, то останавливаем поток, что бы он не слал запрос на доступность сайта, и проверяем если нужные нам данные на сайте и заносим их в лабел. спим, чтобы небыло много запросов секунду и запускаем поток
Отчего может все притормаживать?
lord24 вне форума Ответить с цитированием
Старый 23.11.2015, 16:15   #39
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Sleep(2000);
Это что за Брэд Пыта?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2015, 16:28   #40
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

Если это убрать, а оно вроде как и ни не нужно, то после закрытия вылазит ошибка

с строке процедуры потока
Код:
html1:=IdHTTP2.Post('http://www.Site.ru',PostData);
lord24 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с RTSP потоком (нужно сделать снимок из потока) power11 Мультимедиа в Delphi 1 30.04.2015 20:01
Проблема с потоком! vovken1997 Общие вопросы Delphi 2 12.04.2012 21:21
Проблема с потоком ZekaUa Общие вопросы Delphi 4 01.02.2012 15:29
Проблемы с потоком spydark91 Общие вопросы Delphi 38 23.06.2011 16:23
Проблема с потоком Araver Общие вопросы Delphi 4 16.10.2007 04:30