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