Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка событий в потоке, как??? 
:(
    Опции темы
Zlo
  Дата 6.11.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: 1
Всего: 1



Собственно нужно по событию OnWork компоненты idHTTP1 рвать соединение.
Сделал вот так, но не работает, почему не могу понять:
Код

unit Unit2;
interface
uses
  Classes, SysUtils,IdHTTP, StdCtrls, IdComponent, IdTCPConnection, IdTCPClient,IdCookieManager;
type
  TPMSender = class(TThread)
  idHTTP1:TidHTTP;
  procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
    const AWorkCount: Integer);
  private
    { Private declarations }
    FForumUrl:String;
    FUserList:String;
    FPMmessage:String;
    FForumLogin:string;
    FForumPassword:string;
    FMsgTitle:string;
    Rezyltat:String;
  protected
    procedure Execute; override;
    procedure ShowResult;
    procedure OnTime;
    procedure OffTime;
    procedure IncUser;
    procedure ShowResult2;
  public
    property ForumUrl: string write FForumUrl;
    property UserList: string write FUserList;
    property PMmessage: string write FPMmessage;
    property ForumLogin: string write FForumLogin;
    property ForumPassword: string write FForumPassword;
    property MsgTitle: string write FMsgTitle;
  end;
implementation
uses Unit1;
{$J+}
const
   DataHtmlRead:Boolean=true;
var
    auth_key,post_key:String;
    
procedure TPMSender.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
    if DataHtmlRead= false then
       if AWorkMode=wmRead then idHTTP1.DisconnectSocket;
end;
procedure TPMSender.Execute;
var
  {...}
begin
  {...}
end;

Тов. Matematik сказал что нужно установить событие, но как и где что нужно дописать я не понимаю. Подскажите плиз!

Это сообщение отредактировал(а) Zlo - 8.11.2006, 02:14
PM MAIL   Вверх
Romikgy
Дата 6.11.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Zlo @  6.11.2006,  17:50 Найти цитируемый пост)
DataHtmlRead:=false;

имхо это надо не в потоке делать , а в главной программе


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Zlo
Дата 6.11.2006, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: 1
Всего: 1



Romikgy, 
Цитата(Romikgy @  6.11.2006,  21:14 Найти цитируемый пост)
имхо это надо не в потоке делать , а в главной программе 

не- не это тут просто переменная!
Ну неужели никто не может помоч?!
PM MAIL   Вверх
Romikgy
Дата 6.11.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



но с помощью ее ты стопоришь прием!
Цитата(Zlo @  6.11.2006,  17:50 Найти цитируемый пост)
procedure TPMSender.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
    if DataHtmlRead= false then
       if AWorkMode=wmRead then idHTTP1.DisconnectSocket;
end;

сделай эту переменую членом главной формы, и проверяй ее 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Zlo
Дата 6.11.2006, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: 1
Всего: 1



Romikgy
Цитата(Romikgy @  6.11.2006,  22:44 Найти цитируемый пост)
но с помощью ее ты стопоришь прием!

Дык так и задумано! Тока почему-то не стопорится! И как сделать чтоб работало????
PM MAIL   Вверх
Quadr0
Дата 7.11.2006, 00:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 13:18
  Вверх
Zlo
Дата 7.11.2006, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: 1
Всего: 1



Цитата(Quadr0 @  7.11.2006,  00:25 Найти цитируемый пост)
Собсно ничего не даст. Ну закрылось соединение, а работа потока-то продолжается.

Так и задумано, а не работает то что не стопорится  прием дынных!
Мне не надо убивать поток, поток должен прожолжать работу!
PM MAIL   Вверх
Quadr0
Дата 7.11.2006, 12:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 13:19
  Вверх
Matematik
Дата 7.11.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 17
Всего: 50



Код

  TThread2 = class(TThread)
  private
    procedure WorkEventProc(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
  end;
{...}
procedure TThread2 .WorkEventProc(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
// если сделать Terminate, Disconnect вызовет исключение в методе Get, попадем в try Except
  if Terminated then
    (Sender as TIdHTTP).Disconnect;
end;
procedure TThreadHTTP.Execute;
var  FIdHTTP : TIdHTTP;
begin
  FIdHTTP := TIdHTTP.Create(nil);
  try
    FIdHTTP.OnWork := WorkEventProc; // УСТАНОВКА СОБЫТИЯ
    {...}
     try
       FIdHTTP.Get('большой файл');
     except
       if Terminated then
       begin
         // поток решили остановить
       end
         else
       begin
         // ошибка
       end
     end
    {...} 
  finally
    FIdHTTP.Free;
  end
end;

PM MAIL WWW ICQ   Вверх
dumb
Дата 7.11.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



Цитата(Quadr0 @  7.11.2006,  12:45 Найти цитируемый пост)
DataHtmlRead у тебя - константа! И всегда во время выполнения программы равна True.

если мне не изменяет мой склероз, это называется "типизированной константой" и является, по-сути, переменной с начальным значением, которая, в отличие от обычных, лежит в сегменте data.

PM MAIL   Вверх
Quadr0
Дата 7.11.2006, 14:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 13:19
  Вверх
dumb
Дата 7.11.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



Quadr0, я указал на твое ошибочное высказывание(неоднократное). и все. smile
PM MAIL   Вверх
Quadr0
Дата 7.11.2006, 15:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 13:19
  Вверх
Zlo
Дата 7.11.2006, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: 1
Всего: 1



типизированная константа меняет свое значение в ходе работы программы! 
Matematik,  а незя вместо
Код

if Terminated then
    (Sender as TIdHTTP).Disconnect;

написать
Код

if AWorkMode=wmRead then idHTTP1.DisconnectSocket;

????
PM MAIL   Вверх
Matematik
Дата 7.11.2006, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 17
Всего: 50



Пиши, обрабатывай Exception.
smile
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0714 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.