Thema: Delphi Download als Thread

Einzelnen Beitrag anzeigen

Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#1

Download als Thread

  Alt 16. Feb 2009, 14:31
Hi,

ich habe hier im Forum mal gesucht und auch was gefunden aber so richtig verstehen tu ich die Codes da nicht. Ich möchte noch anmerken, dass ich vorher noch nie mit Threads gearbeitet hab. Also ich möchte eine Datei mit IdHttp in einem Thread downloaden sodass meine Hauptanwendung nicht abstürzt währenddessen. Ich habe mir Luckies Tutorial mal durchgeblättert doch das Ganze ist ein bisschen viel zu lesen (40 Seiten). Natürlich werde ich mir das nochmal richtig duchlesen aber ich hoffe trotzdem erstmal auf eure Hilfe.

Also hier mein bisheriger Code im Thread:
Delphi-Quellcode:
unit Downloaden;

interface

uses
  Classes, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;

type
  Download = class(TThread)

  private
     procedure Downloaden;
  protected
    procedure Execute; override;

  end;


implementation

uses Unit1, Unit12;

{ Download }

procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Integer);
begin
form12.progressbar1.Position := AWorkCount;
end;

procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Integer);
begin
form12.progressbar1.Max := aworkcountmax;
end;

procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
form12.progressbar1.Position := 0;
form12.progressbar1.Visible := false;
end;

procedure Download.Execute;
begin
Synchronize(Downloaden);
end;

procedure Download.Downloaden;
var http1: TIdhttp;
lstream: Tfilestream;
begin
  http1 := TIdhttp.create();

  http1.free;

lStream:=TFileStream.Create(form1.Edit1.Text + '\' + form1.Edit2.Text + '.mp4' , fmCreate);
  try
     Http1.Get(Form12.memo4.text,lStream);
  finally
    lStream.Free;
  end;


end;

end.
Geht das Ganze so einigermaßen?

Mein eigentliches Problem ist jetzt aber das ich nicht weiß wie ich den Thread per Button starte?

Wenn ich sowas schreibe:
Delphi-Quellcode:
var
  Fredie: TDownload;
begin
Fredie:=TDownload.Create(True);
 Fredie.OnTerminate:=ThreadTerminate;
  Fredie.Resume;

end;
Erhalte ich folgende Fehlermeldung:

[DCC Fehler] Unit12.pas(190): E2003 Undefinierter Bezeichner: 'TDownload'

Wenn ich bei den Uses den Unit Namen "Downloaden" eingebe kommt der gleiche Fehler. Ich hoffe Ihr könnt mir helfen.

MFG Lars Wiltfang
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat