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

Поиск:

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


Новичок



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

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



В потоке мне нужно использовать Событие Redirect у компонента IDhttp1
Когда я делаю это на форме- это выглядит так:
Код

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    procedure IdHTTP1Redirect(Sender: TObject; var dest: String;
      var NumRedirect: Integer; var Handled: Boolean;
      var VMethod: TIdHTTPMethod);
....


procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: String;
  var NumRedirect: Integer; var Handled: Boolean;
  var VMethod: TIdHTTPMethod);
begin
  showmessage('');
end;


А как создать процедуру в потоке? если я просто напишу procedure IdHTTP1Redirect(Sender: TObject........... в разделе Type то выдает ошибку [Error] Unit2.pas(12): Unsatisfied forward or external declaration: 'SSS.IdHTTP1Redirect'


Подскажите плз как Пользоваться процедцрами компонентов в потоке

Это сообщение отредактировал(а) d10gtr - 2.11.2007, 18:45
PM MAIL   Вверх
bems
Дата 2.11.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(d10gtr @  2.11.2007,  18:44 Найти цитируемый пост)
Unsatisfied forward or external declaration: 'SSS.IdHTTP1Redirect'
ну это просто означает что ты добавил описание метода, но не предоставил реализации

это есть
Цитата(d10gtr @  2.11.2007,  18:44 Найти цитируемый пост)
procedure IdHTTP1Redirect(Sender: TObject; var dest: String;
      var NumRedirect: Integer; var Handled: Boolean;
      var VMethod: TIdHTTPMethod);


а аналога этого нет
Цитата(d10gtr @  2.11.2007,  18:44 Найти цитируемый пост)
procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: String;
  var NumRedirect: Integer; var Handled: Boolean;
  var VMethod: TIdHTTPMethod);
begin
  showmessage('');
end;




--------------------
Обижено школьников: 8
PM MAIL   Вверх
d10gtr
Дата 4.11.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот почему ничего не работает?

Когда я делаю это в форме,то событие срабатывает, а в потоке не хочет...Подскажите пожалуйста


Код

unit Unit2;

interface

uses
  Classes,SysUtils,IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  IdBaseComponent,  StdCtrls,Dialogs;


type
  LaLa = class(TThread)
    idHTTP1:TidHTTP;
      procedure IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

implementation
     Uses Unit1;





procedure LaLa.Execute;
begin
idHTTP1 := TidHTTP.Create(nil);
  { Place thread code here }
  form1.Memo1.Text:=idhttp1.Get('http://forum.vingrad.ru/');
end;



procedure LaLa.IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: String);
begin
showmessage('Сообщение');
end;
end.



Это сообщение отредактировал(а) d10gtr - 4.11.2007, 17:32
PM MAIL   Вверх
X-Vlad
Дата 5.11.2007, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

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



Код

unit Unit2;

interface

uses
  Classes,SysUtils,IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  IdBaseComponent,  StdCtrls,Dialogs;


type
  LaLa = class(TThread)
    idHTTP1:TidHTTP;
  private
      procedure IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
         const AStatusText: String);
      procedure YouMessage(aMsg: string);
  protected
    procedure Execute; override;
  end;

implementation
     Uses Unit1;

procedure LaLa.Execute;
begin
  idHTTP1 := TidHTTP.Create(nil);
  idHTTP1.OnStatus := IdHTTP1Status;

  idhttp1.Get('http://forum.vingrad.ru/');
end;

procedure LaLa.YouMessage(aMsg: string);
begin
  showmessage(aMsg);
end;

procedure LaLa.IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: String);
begin
  Synchronize(YouMessage('Сообщение'));
end;

end.


Это сообщение отредактировал(а) X-Vlad - 5.11.2007, 11:26


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
MetalFan
Дата 5.11.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



X-Vlad, а ничего, что в Synchronize надо метод, а не процедуру передавать?

Добавлено через 55 секунд
Цитата(d10gtr @  4.11.2007,  17:31 Найти цитируемый пост)
form1.Memo1.Text:=idhttp1.Get('http://forum.vingrad.ru/');

а так в потоке делать ни в коем случае нельзя


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
X-Vlad
Дата 5.11.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

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



Цитата(MetalFan @ 5.11.2007,  10:17)
X-Vlad, а ничего, что в Synchronize надо метод, а не процедуру передавать?

Добавлено @ 11:18
Цитата(d10gtr @  4.11.2007,  17:31 Найти цитируемый пост)
form1.Memo1.Text:=idhttp1.Get('http://forum.vingrad.ru/');

а так в потоке делать ни в коем случае нельзя

согласен. неувидел. ))))


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
d10gtr
Дата 5.11.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



X-Vlad я попробовал твой пример,но ничего не вышло...Вылетает ошибка...

 
[Error] Unit2.pas(40): There is no overloaded version of 'Synchronize' that can be called with these arguments


Что делать?





PM MAIL   Вверх
X-Vlad
Дата 5.11.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

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



Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  IdBaseComponent;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  LaLa = class(TThread)
    idHTTP1: TidHTTP;
  private
    FMsg : string;
    procedure IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
    procedure YouMessage;
    procedure GetPageInfo;
  protected
    procedure Execute; override;
  end;

var
  Form1: TForm1;

{$R *.DFM}  

implementation

procedure lala.GetPageInfo;
begin
  form1.Memo1.Text := idhttp1.Get('http://forum.vingrad.ru/');
end;

procedure LaLa.Execute;
begin
  idHTTP1 := TidHTTP.Create(nil);
  idHTTP1.OnStatus := IdHTTP1Status;

  Synchronize(GetPageInfo);
end;

procedure LaLa.YouMessage;
begin
  showmessage(FMsg);
end;

procedure LaLa.IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
  FMsg := Format('Status %s', [AStatusText]);
  Synchronize(YouMessage);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  l: lala;
begin
  l := lala.Create(False);
end;

end.


Это сообщение отредактировал(а) X-Vlad - 5.11.2007, 19:25


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
d10gtr
Дата 5.11.2007, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Большое спасибо...
 smile 
PM MAIL   Вверх
MetalFan
Дата 5.11.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



нет никакого смысла использовать потоки в данном примере


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
d10gtr
Дата 6.11.2007, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Знаю, мне в качестве примера надо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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