Citation :
unit ThreadDownload;
interface
uses
Classes,unittelechargement,IdException,Windows,dialogs;
type
Tdownload = class(TThread)
private
FTel:Tform2;
{ Déclarations privées }
Procedure OnTerminateprocedure(sender:tobject);
protected
procedure Execute; override;
public
constructor create(suspended:boolean);
end;
implementation
constructor Tdownload.create(suspended:boolean);
begin
Freeonterminate:=true;
inherited create(suspended);
Ftel:=Tform2.Create(nil);
Ftel.Labelnomdefichier.Caption:=nomfic;
Ftel.labelurl.caption:=url;
Ftel.Show;
OnTerminate:=OnTerminateProcedure;
end;
Procedure Tdownload.OnTerminateprocedure;
begin
if Assigned(Ftel) then Ftel.release;
end;
{ Important : les méthodes et propriétés des objets de la VCL peuvent uniquement
être utilisés dans une méthode appelée en utilisant Synchronize, comme :
Synchronize(UpdateCaption);
où UpdateCaption serait de la forme procedure Tdownload.UpdateCaption;
begin
Form1.Caption := 'Mis à jour dans un thread';
end; }
{ Tdownload }
procedure Tdownload.Execute;
var Fs : TFileStream;
begin
if assigned(ftel) then
begin
Fs := TFileStream.Create(ftel.Labelnomdefichier.caption,fmCreate); //Nom du fichier local
with Ftel.IdHTTP1 do
try
try
//URL du fichier à télécharger
Get(Ftel.LabelURL.caption,Fs);
except
On E : EIdException do
{ MessageDlg(Format('Erreur Indy : %s',[E.message]), mtError, [mbOK], 0) }
begin
//deletefile(ftele.Labelnomdefichier.caption);
end;
{On E : Exception do
ShowMessage(Format('Erreur inconnue : %s',[E.Message]));
}end;
finally
Fs.Free; //Liberer le flux
end;
{ Placez le code du thread ici }
end;
end;
end.
|