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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 18:13   #1
Joe_Tribbiani
Форумчанин
 
Аватар для Joe_Tribbiani
 
Регистрация: 14.02.2009
Сообщений: 110
Вопрос Как в ProgressBar отобразить процесс выполнения Post запроса через Idhttp

Как в ProgressBar отобразить прогресс выполнения Post запроса через Idhttp?
Да, и еще: как ускорить выполнение запроса?

Последний раз редактировалось Joe_Tribbiani; 25.03.2009 в 18:27.
Joe_Tribbiani вне форума Ответить с цитированием
Старый 25.03.2009, 19:04   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

1. для отображения процесса запроа в IdHTTP используются события onworkbegin onwork onworkend
2. Так какового ускорения сделать невозможно. Единственное что можно сделать: если удаленный сервер поддерживает GZIP, то можете подключить к IDhttp компонент TIdCompressorZLib с вкладки Misc.
Компонент связывается путем указания его в свойстве compressor компонента IdHttp
Также для корректной отрисовки прогресбаров бросьте на форму компонент TIdAntiFreeze с вкладки Misc. Он эмулирует работу неблокирующих сокетов и позволяет корректно обрабатывать и перерисовывать компоненты формы во время выполнения запроса.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 25.03.2009, 20:28   #3
Joe_Tribbiani
Форумчанин
 
Аватар для Joe_Tribbiani
 
Регистрация: 14.02.2009
Сообщений: 110
По умолчанию

Спасибо!
Но процесс запроса отображаеться так быстро, что невозможно и заметить)
Joe_Tribbiani вне форума Ответить с цитированием
Старый 25.03.2009, 20:35   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Может просто запрос быстро проходит ? ) попробуй загрузить файл побольше и посмотри )
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 25.03.2009, 21:47   #5
Joe_Tribbiani
Форумчанин
 
Аватар для Joe_Tribbiani
 
Регистрация: 14.02.2009
Сообщений: 110
По умолчанию

) Да я не файл загружаю, а просто отправляю пост запрос (регюсь на сайте), но иногда он долговато отправляеться, такшо и хотел отобразить прогресс... А сейчас отображаеться пустой прогресс бар, потом он думает, потом резко прогрессбар заполняеться и всё)
А я хотел чтобы в то время когда он думает, отображался прогресс
Joe_Tribbiani вне форума Ответить с цитированием
Старый 08.06.2009, 11:41   #6
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Хорошо

Может ещё нужно, вот код использования прогресса в программе:
Код:
unit Unit1;

interface

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

const 
  MY_MESS = WM_USER + 100;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    IdAntiFreeze1: TIdAntiFreeze;
    Gauge1: TGauge;
    procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    procedure IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
  private
    { Private declarations }
  public
   procedure MyProgress(var msg:TMessage);message MY_MESS;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

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.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
 PostMessage(Application.MainForm.Handle, MY_MESS, 1, AWorkCount);
end;

procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
 PostMessage(Application.MainForm.Handle, MY_MESS, 0, AWorkCountMax);
end;

end.
Alter вне форума Ответить с цитированием
Старый 08.06.2009, 17:37   #7
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Цитата:
Сообщение от Joe_Tribbiani Посмотреть сообщение
) Да я не файл загружаю, а просто отправляю пост запрос (регюсь на сайте), но иногда он долговато отправляеться, такшо и хотел отобразить прогресс... А сейчас отображаеться пустой прогресс бар, потом он думает, потом резко прогрессбар заполняеться и всё)
А я хотел чтобы в то время когда он думает, отображался прогресс
Скорее сам запрос отправляется быстро, но сервер отвечает медленно.
Viteef вне форума Ответить с цитированием
Старый 08.06.2009, 17:52   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
) Да я не файл загружаю, а просто отправляю пост запрос (регюсь на сайте), но иногда он долговато отправляеться, такшо и хотел отобразить прогресс... А сейчас отображаеться пустой прогресс бар, потом он думает, потом резко прогрессбар заполняеться и всё)
А я хотел чтобы в то время когда он думает, отображался прогресс
1.в событиях onworkXXX добавь обработку сообщений ос
2. Как вы собираетесь отобразить процесс "думает" ? у него нет начала и окончания, есть только текущий процесс. Для этого существуют компоненты, отображающие не "прогресс", а именно "длительное неопределенное действие". Пример: любой анимационный крутящийсяобъект с надписью "ожидайте".
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 15.06.2009, 10:39   #9
Joe_Tribbiani
Форумчанин
 
Аватар для Joe_Tribbiani
 
Регистрация: 14.02.2009
Сообщений: 110
По умолчанию

Спс всем, кто ответил)
Цитата:
Пример: любой анимационный крутящийсяобъект с надписью "ожидайте".
А хорошая идея, так даже легче...
Joe_Tribbiani вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отобразить в ProgressBar процесс отправки писем через SMTP leon2009 Работа с сетью в Delphi 15 20.03.2009 21:26
Как с помощью ProgressBar показать процесс загрузки файла? blackstersl Общие вопросы Delphi 5 20.03.2009 11:31
как отобразить в dbgrid результат выполнения commandText двух adodataset? Гузель БД в Delphi 2 13.08.2008 16:17
idHTTP GET и POST запросы FAiver Работа с сетью в Delphi 64 15.05.2008 13:22
Все тот же IdHTTP (Post) AVer Работа с сетью в Delphi 5 28.09.2007 10:40