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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2011, 12:01   #1
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
Смущение Не удается связать поток+idHttp+прогресс бар

Перепробывал множество способов для синхронизации поток+idHttp+прогресс бар, но так ничего и не вышло. Могли бы вы показать работающий способ, только не сложный.

Посмотрите что неправильно??? HttpThread.rar
Помог, нажми весы слева

Последний раз редактировалось grafgrial; 24.05.2011 в 15:45.
grafgrial вне форума Ответить с цитированием
Старый 24.05.2011, 15:46   #2
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

По разному пробывал, не идет прогресс (сама отправка идет и получаю результат)
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, IdMultipartFormData, ComCtrls, Gauges,
  IdAntiFreezeBase, IdAntiFreeze;
    const
  MY_MESS = WM_USER + 100;
type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    Button1: TButton;
    lst2: TListBox;
    lst3: TListBox;
    pb: TProgressBar;
    Gauge1: TGauge;
    IdAntiFreeze1: TIdAntiFreeze;
    Edit1: TEdit;
    procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    procedure IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    procedure IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
   procedure MyProgress(var msg:TMessage);message MY_MESS;

    { Public declarations }
  end;

  type
  thed = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

  var
  Form1: TForm1;

implementation

{$R *.dfm}

 procedure thed.Execute;
var
formData: TIdMultiPartFormDataStream;
g,s:string;
begin
formdata:=TIdMultiPartFormDataStream.Create;
try
Form1.idHTTP1 := TIdHTTP.Create(nil);
formData.AddFile('upfile','2.jpg','application/octet-stream');
formdata.AddFormField('password', '13');
formdata.AddFormField('softupload', 'yes');
formdata.AddFormField('filename', '2.jpg');
formdata.AddFormField('keep-days', '1');
s:=form1.idHTTP1.Post('http://...../upload',formData); //отправялем пост запрос, в ответ придет string. его в s

if pos('<a href="',s)>0 then
begin
Delete(s,1,Pos('<a href="',s)+8);
while pos('">',s)>0 do begin
Delete(s,Pos('">',s),length(s));end;
Form1.lst2.Items.Add('http://.....ru'+s);
end
else
begin
while pos(': http',s)>0 do begin
Delete(s,1,Pos(': http',s)+1);end;
g:=s;
Form1.lst3.Items.Add(s);
while pos('/delete',g)>0 do begin
Delete(g,Pos('/delete',g),length(g));end;
Form1.lst2.Items.Add(g);
end;
finally
Form1.Idhttp1.Free;
end;
end;


procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  pb.Position := AWorkCount;
   PostMessage(Application.MainForm.Handle, MY_MESS, 1, AWorkCount);
 Application.ProcessMessages;
end;

procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
pb.Position := 0;
  pb.Max := AWorkcountMax;
   PostMessage(Application.MainForm.Handle, MY_MESS, 0, AWorkCountMax);

end;

procedure TForm1.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
pb.Position := 0;
end;

procedure TForm1.MyProgress(var msg: TMessage);
begin
case msg.WParam of
  0: begin
      Gauge1.MaxValue := msg.LParam;
      Gauge1.Progress := 0;
     end;
  1: Gauge1.Progress := msg.LParam;
 end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
thed.Create(false);
end;

end.
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типа Прогресс бар! WizarD.89 Microsoft Office Excel 3 24.04.2011 14:20
Цикл и прогресс-бар А)-(дрей Microsoft Office Excel 4 17.03.2011 18:13
"Независающий" прогресс-бар KuznetsovKV Общие вопросы Delphi 3 22.04.2010 00:02
список и прогресс бар Temka Общие вопросы Delphi 1 02.06.2009 12:20