Download Class

Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Cevapla
alicilin
Üye
Mesajlar: 15
Kayıt: 23 Ara 2014 04:11
Konum: Şırnak
İletişim:

Download Class

Mesaj gönderen alicilin »

Merhaba abilerim, ablalarım, arkadaşlarım.

Delphide bir download classı yazdım kendim için.(Acemiyim eksik yanları mutlaka vardır. Hatta bir dünya vardır diyeyim :D ) sizlerle de paylaşmak istedim.

Sınıf ne işe yarar:
- Bir Url deki dosyayı indirmenize yarar. Aynı zamanda parametre olarak vereceğiniz bir progressbarı'da kontrol eder indirmeye göre.

Sınıf;

Kod: Tümünü seç

unit Download;

interface

Uses
   System.SysUtils, System.Classes, Vcl.Forms, Vcl.Dialogs, IdComponent, IdHTTP, Vcl.ComCtrls;

type
    FileDownload = class
public
    function DownloadFile(Url: String; SFile: String; &ProgressBar: TProgressBar): Boolean;
    procedure HttpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
    Destructor destroy;
private
    Bar : TProgressBar;
    Http : TIdHTTP;
    DFile: TFileStream;

End;

implementation

function FileDownload.DownloadFile(Url:string; SFile: String; &ProgressBar: TProgressBar): Boolean;
begin
     try
       Bar := ProgressBar;
       DFile := TFileStream.Create(Sfile,fmCreate);
       Http := TIdHTTP.Create();
       Http.OnWork := HttpWork;
       Http.Get(Url, DFile);
       Result := True;
     Except On E: Exception Do

           ShowMessage(E.Message);
     end;
end;

procedure FileDownload.HttpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
begin
   try
      Bar.Position := round(( aworkcount * 100 ) / DFile.Size );
      Bar.Update;
      Application.ProcessMessages;
   Except On E: Exception Do

           ShowMessage(E.Message);

   end;
end;

Destructor FileDownload.destroy;
begin
   Dfile.Free;
   Http.Free;
end;

end.


Kullanımı; Bir Butonun içine de yazabilirsiniz. Global olarakta tanımlayabilirsiniz;

Kod: Tümünü seç

var
Fdown : FileDownload;
begin
    
    Fdown := FileDownload.create;
    
    if Fdown.DownloadFile('http://www.site.com/deneme.rar','c:\deneme.rar',Progressbar1) = True then
        ShowMessage('Dosya İndirildi');
    
    Fdown.Free;
end;
Önemli olan bilip bilmemek değil. Öğrenebilecek kapasitede olmak
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Download Class

Mesaj gönderen G.Arkas »

Eline saglik, bunu bir thread sinifindan tureterek partial download ve coklu indirme ozelligide verebilirsin.
Resim
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Download Class

Mesaj gönderen SimaWB »

Parça parça download için harika bir kaynak:
http://www.tugrulhelvaci.com/?p=273
There's no place like 127.0.0.1
Cevapla