Solved

HTTP Get with progress meter (with Indy?)

Posted on 2009-05-06
3
805 Views
Last Modified: 2012-05-06
I'm looking for sample Delphi 7 code with Indy 9.0 that does an http get of a file, with a hook for an OnWork event (so I can have a progress meter.)

Does anyone know if this is possible with Indy. I'd prefer not to use another library if possible.
0
Comment
Question by:tfield98
3 Comments
 
LVL 18

Accepted Solution

by:
Johnjces earned 500 total points
Comment Utility
Try the following...

Not certain where I got the code.

John


drop a TIdHTTP, a TLabel a TIdAntiFreeze and a TProgressBar
 

procedure TForm1.IdHttp1WorkBegin(Sender:TObject; AWorkMode:TWorkMode;const AWorkCountMax:Integer);

begin

  if AWorkMode = wmRead then

  begin

    ProgressBar1.Max := AWorkCountMax ;

    ProgressBar1.Position := 0 ;

  end;

end;
 

procedure TForm1.IdHttp1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);

begin

  if AWorkMode = wmRead then

  begin

    ProgressBar1.Position := AWorkCount ;

    Label1.Caption := IntToStr(AWorkCount) + 'Bytes of :' + ProgressBar1.Max ;

  end;

end;
 

procedure TForm1.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);

begin

  if AWorkMode = wmRead then

    Label1.Caption := 'Completed';

end;
 

to download,
 

var

  F: TFileStream;

begin

  F := TFileStream.Create('download.zip', fmCreate);

  try

    IdHTTP1.Get('http://somesite.com/downloads/download.zip', F);

  finally

    F.Free;

  end;

end;

Open in new window

0
 
LVL 26

Expert Comment

by:EddieShipman
Comment Utility
Damn John, you beat me to it...
If you are using this for normal web page gets, you aren't going to see much progress as it will flash too fast.
0
 

Author Closing Comment

by:tfield98
Comment Utility
The code worked perfectly (with an added IntToStr that was needed. Thanks A LOT, John!  (Yes, Eddie, I'm using it to download a large file, so it won't flash. But thanks for the heads up.)
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now