Avatar billede mysitesolution Nybegynder
11. marts 2003 - 16:15 Der er 15 kommentarer og
1 løsning

download i delphi

Jeg bruger lige nu URLMON til at downloade med, men når man downloader fryser programmet, kan man ikke gøre noget andet?
Avatar billede hermandsen Juniormester
11. marts 2003 - 16:23 #1
Læg det i en Thread, eller brug Indy!!
Avatar billede mysitesolution Nybegynder
11. marts 2003 - 16:28 #2
ok... har du noget kode til indy
Avatar billede hermandsen Juniormester
11. marts 2003 - 16:38 #3
uses
  IdHTTP, Classes;

procedure Download(URL, Dest: String);
var
  idh: TIdHTTP;
  fs: TFileStream;
begin
  idh := TIdHTTP.Create(nil);
  fs := TFileStream.Create(Dest, fmCreate);
  idh.Get(URL, fs);
  fs.Free;
  idh.Free;
end;

Start derfra... Det var hvad jeg lige kunne huske...
Avatar billede borrisholt Novice
11. marts 2003 - 16:41 #4
hermandsen>> Det glæder mig meget at se dig rige en tur på min kæphest :

Først siger du tråde til manden, så siger du INDY !!!

Dagens hest !!!

Jens b
Avatar billede mysitesolution Nybegynder
11. marts 2003 - 16:42 #5
den fryser stadig
Avatar billede hermandsen Juniormester
11. marts 2003 - 16:50 #6
Hehe... Vi lærer jo noget hele tide, borrisholt! ;)

>>mysitesolution
Smid en IdAntiFreeze-komponent på!
Avatar billede mysitesolution Nybegynder
11. marts 2003 - 17:43 #7
den gør det stadig en lile smule
Avatar billede hermandsen Juniormester
11. marts 2003 - 18:31 #8
Så smid det i en tråd!!

type
  THesteArbejde = class(TThread)
  private
    FURL: String;
    FDest: String;
    FOnComplete: TNotifyEvent;
  protected
    procedure Execute; override;
  public
    procedure Download(URL, Dest: String);
    property OnComplete: TNotifyEvent read FOnComplete write FOnComplete;
  end;

procedure THesteArbejde.Download(URL, Dest: String);
begin
  FURL := URL;
  FDest := Dest;
  Resume;
end;

procedure THesteArbejde.Execute;
var
  idh: TIdHTTP;
  fs: TFileStream;
begin
  idh := TIdHTTP.Create(nil);
  fs := TFileStream.Create(FDest, fmCreate);
  idh.Get(FURL, fs);
  fs.Free;
  idh.Free;
  FOnComplete(Self);
  Free;
end;


Så trykker du bare på en knap eller noget:

private
  Hest: THesteArbejde;
public
  procedure HestenSkalSove(Sender: TObject);

procedure TOverSuperHesteForm.MinPonyKnapTryk(Sender: TObject);
begin
  Hest := THesteArbejde.Create(True);
  Hest.OnComplete := HestenSkalSove;
  Caption := 'Jeg er altså lige ved at hente, men du fortsætter bare dit arbejde!';
  Hest.Download('http://ebruger.dk/img/ebruger_logo.gif', ExtractFilePath(Application.ExeName) + 'hestefil.hest');
end;

procedure TOverSuperHesteForm.HestenSkalSove(Sender: TObject);
begin
  Caption := 'Nu har jeg hestet færdigt!! God nat!!';
end;


Og alt det uden at starte Delphi... Det er sgu da meget godt klaret! :)

Til dem der brokker sig, ja jeg ved godt at man skal bruge Synchronize når man bruger Threads på VCL, men nu vil jeg snart i gang med mit hestePHP!!!

//hermandsen
Avatar billede borrisholt Novice
12. marts 2003 - 08:20 #9
Jeg ville nærmer brokke mig over at en Tråd ALLEREDEhar et event til at fortælle hvornår den er færdig : OnTerminate.

Og hvad så med at fortælle manden hvordan, man beregner progress. Du ved download hastighed, og hvornår den er færdig etc.

Jens B
Avatar billede hermandsen Juniormester
12. marts 2003 - 09:47 #10
Arh Jens...

Så skal jeg jo næsten til at starte Delphi! :)
Avatar billede mysitesolution Nybegynder
12. marts 2003 - 10:48 #11
laver du det ikke som et projekt og ligger det op som zip, så acceptere jeg dig
Avatar billede hermandsen Juniormester
12. marts 2003 - 13:19 #12
Nej!
Avatar billede mysitesolution Nybegynder
12. marts 2003 - 18:00 #13
Hvorfor... jeg forstår ikke helt koden... så er det lettere med projekt
Avatar billede hermandsen Juniormester
13. marts 2003 - 10:26 #14
Hvis du ikke forstår koden, så ville det nok være bedre med en bog først!!
At downloade filer bør ikke være et projekt man starter med!!

Desuden lærer du ikke noget selv, hvis jeg bare koger noget sammen til dig!!
Derfor, nej!!
Avatar billede athlon-pascal Juniormester
13. marts 2003 - 10:31 #15
mysitesolution -> Du skal nok til at træde varsomt hvis du fortsat vil bruge Eksperten til det Eksperten er bedst til: På næsten ingen tid få svar på svære spørgsmål fra andre mennesker der GRATIS ønsker at hjælpe andre med deres IT-problemer, kun belønnet med såkaldte points.

Du vil nok blive ignoreret i fremtiden, hvis ikke du forbedrer dig og viser lidt mere respekt over for dem der prøver at hjælpe...
Avatar billede mysitesolution Nybegynder
13. marts 2003 - 17:39 #16
Sorry... jeg sprurgte bare om han ville.... men nu har han fået point, tak hermandsen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester