Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Загрузка страниц в Потоке с idHTTP


Страницы:   1 2

Pcrepair ©   (2012-12-11 23:03:00) 

Добрый день. Есть код:

unit Unit1;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
 TForm1 = class(TForm)
   Memo1: TMemo;
   ListBox1: TListBox;
   procedure ListBox1DblClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
uses uThreadLoader;

procedure TForm1.ListBox1DblClick(Sender: TObject);
var ThreadLdr: TLoader; HtmlCode:string;
 begin
   ThreadLdr:=Tloader.Create(True); (*создаем поток*)
   ThreadLdr.Priority:=tpNormal;        (*задать приортет нормальный*)
   ThreadLdr.FreeOnTerminate:=True;  (*самовыгрузка в конце потока*)
   ThreadLdr.Resume;  (*запускаю поток - что то устаревшее заменить?*)
   ThreadLdr.Url:=ListBox1.Items[ListBox1.ItemIndex]; (*передаем УРЛ из ЛБ в Поток, все работает*)
   HtmlCode:=ThreadLdr.Html;  (*получаем результат ТУТ ПУСТО!!!*)
   Memo1.Lines.Add(HtmlCode); (*выводим результат в МЕМО*)
 end;
end.


и дополнительный модуль

unit uThreadLoader;

interface

uses
 System.Classes, idHTTP, SysUtils, Dialogs;

type

 TLoader = class(TThread)
 private
   { Private declarations }
 protected
   procedure Execute; override;
   procedure LoadPage;
 public
   Url, Html:string;
 end;

implementation

procedure Tloader.LoadPage;
var
Ldr:TidHTTP;
begin
  Ldr:=TidHTTP.Create(nil);
     Html:=Ldr.Get(Url);
     ShowMessage(Html); (*тут страница есть*)
  FreeAndNil(Ldr);
end;

procedure TLoader.Execute;
begin
  Synchronize(LoadPage);
end;

end.


Задача была такая: загрузить страницу посредством idHTTP но с использованием класса TThread. Вроде все по теории?
Вопросы:
- почему не передается код страницы в HtmlCode:=ThreadLdr.Html;????  УРЛ через переменную доходит до idHTTP, а обратно нет
- РАД говорит что [dcc32 Warning] Unit1.pas(44): W1000 Symbol 'Resume' is deprecated или устарело. а чем заменить?


DVM   (2012-12-12 00:27:00) [21]


>    ThreadLdr.Url:=ListBox1.Items[ListBox1.ItemIndex]; (*передаем
> УРЛ из ЛБ в Поток, все работает*)
>    HtmlCode:=ThreadLdr.Html;  (*получаем результат ТУТ ПУСТО!
> !!*)

вот здесь у тебя ошибка, даже 2 по одной в каждой строке.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо