Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1362 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Indy : idhttp empecher que ça freeze !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Indy : idhttp empecher que ça freeze !

n°909761
davidmarli
Posté le 28-11-2004 à 19:46:42  profilanswer
 

Bonsoir à tous,
 
voilà, j'essaye de me faire un prog qui récupère automatiquement les bandes annonces des films de la semaine à partir du site cinefil.com.
Bon j'arrive bien à télécharger les BA (enfin une pour l'instant pour tester !)  
Mais mon appli freezait un peu (genre impossible de déplacer la fenêtre de l'appli)
 
J'ai installé les composants indy 9.0.18 (datant e ce mois-ci) et j'ai vu qu'il existe un composant IdAntiFreeze. Comme vu sur un site, j'ai posé ce composant sur ma fenêtre, mais cela ne faisait rien.
J'ai donc rajouter un IdAntifreeze.process dans la procédure idhttp.work.
Cela va un peux mieux, j'ai maintenant la progression et la vitesse du téléchargement qui s'affichent correctement, mais il reste un petit pb (à mon goût), windows met une à deux seconds pour déplacer la fenêtre du prog, si je lui demande.
 
Alors ma question est que puis-je faire ?
 
J'ai vu aussi qu'on pouvait faire un thread. Mais je ne sais absoluement pas comment ça marche. (ni ce que c'est d'ailleurs !)
 
Merci pour votre aide.


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
mood
Publicité
Posté le 28-11-2004 à 19:46:42  profilanswer
 

n°909776
Inekman
Posté le 28-11-2004 à 20:13:13  profilanswer
 

"Cela va un peux mieux, j'ai maintenant la progression et la vitesse du téléchargement qui s'affichent correctement"  
 
Ca m'intéresse, comment as-tu fais ?? Moi ça chie tout court.

n°909795
davidmarli
Posté le 28-11-2004 à 20:45:48  profilanswer
 

Et bien, sur le fameux site de Michel j'ai trouvé une page intéressante :  
 
http://www.phidels.com/php/index.p [...] b76d3042c5
 
plus cette page :
 
http://delphi.developpez.com/faq/?page=indy_idhttp
 
J'ai téléchargé et installer les dernier indy (http://www.indyproject.com : les 9.0.18)
 
voici mon code source de ma fiche de téléchargement :  
 

Citation :

unit Unittelechargement;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, IdAntiFreezeBase, IdAntiFreeze, StdCtrls, ComCtrls, XPMan,DateUtils;
 
type
  TFormtelechargement = class(TForm)
    IdHTTP1: TIdHTTP;
    IdAntiFreeze1: TIdAntiFreeze;
    ProgressBartelechargement: TProgressBar;
    Labeltailletelecharge: TLabel;
    XPManifest1: TXPManifest;
    Labelvitesse: TLabel;
    procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    procedure IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    procedure IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
 
var
  Formtelechargement: TFormtelechargement;
  fstartdate:tdate;
const
  RS_Fin = 'Téléchargement terminé';
 
implementation
 
{$R *.dfm}
 
procedure TFormtelechargement.IdHTTP1Work(Sender: TObject;
  AWorkMode: TWorkMode; const AWorkCount: Integer);
var ElapsedTime : Cardinal;
begin
 if AWorkMode = wmRead then
  begin
    ProgressBartelechargement.Position := AWorkCount ;
    LabelTailleTelecharge.Caption := 'Fichier téléchargé : '+inttostr(round(Aworkcount/1000))+' ko / '+inttostr(round(progressbartelechargement.max/1000))+' ko.';
                         //Format(RS_Debit, [AWorkCount, ProgressBartelechargement.Max]);
     ElapsedTime := SecondsBetween(Now,FStartDate); //Calculer le temps de téléchargement
     if ElapsedTime>0 then
     begin
       Labelvitesse.Caption := 'Vous téléchargez à '+inttostr(round((AWorkCount/1024)/ElapsedTime))+' Ko/s';
       Formtelechargement.IdAntiFreeze1.process;
     end;
    end;
end;
 
procedure TFormtelechargement.IdHTTP1WorkBegin(Sender: TObject;
  AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
 if AWorkMode = wmRead then
  begin
    ProgressBartelechargement.Max := AWorkCountMax;
    ProgressBartelechargement.Position := 0 ;
    labelvitesse.Caption:='Téléchargement à 0 ko/s';
    FStartDate := Now;
  end;
end;
 
procedure TFormtelechargement.IdHTTP1WorkEnd(Sender: TObject;
  AWorkMode: TWorkMode);
begin
 if AWorkMode = wmRead then
  begin
    LabelTailleTelecharge.Caption := RS_Fin;
    ProgressBartelechargement.Position := ProgressBartelechargement.Max;
  end;
end;
 
end.


 
Il s'agit tout simplement d'une fiche sur laquelle j'ai mis :
une progressbar : name : progressbartelechargement
deux label : name : labelvitesse, labeltailletelecharge
un compo idhttp et un compo idantifreeze
 
Voilà.


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
n°909810
antp
Super Administrateur
Champion des excuses bidons
Posté le 28-11-2004 à 21:01:10  profilanswer
 

Vous êtes encore là avec vos threads qui marchent pas ? :o
Ça avait déjà commencé là : http://forum.hardware.fr/forum2.ph [...] 356&cat=10
Il faudrait absolument que je fasse un petit exemple du fonctionnement des threads avec le TIdHttp.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°909912
davidmarli
Posté le 28-11-2004 à 22:54:56  profilanswer
 

oh oui, un exemple !


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
n°910823
zion
Plop
Posté le 29-11-2004 à 22:32:38  profilanswer
 

ou le source de Kapere...
 
ah benh non, je le donnerai pas  
 
 
[:neowen]


Message édité par zion le 29-11-2004 à 22:32:46

---------------
Informaticien.be - Lancez des défis à vos amis
n°910853
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-11-2004 à 22:40:41  profilanswer
 

le code source d'Ant Renamer (thread utilisé pour renommer les fichiers) ou d'Ant Movie Catalog (thread utilisé pour le download justement)
:D
mais c'est vachement lourd à installer et compliqué à piger je pense (mélangé à tout le reste du code du soft), d'où l'idée d'un exemple simple...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Indy : idhttp empecher que ça freeze !

 

Sujets relatifs
idhttp : connection closed gracefully ?[Namo WebEditor] empecher le soulignement permanent des hyperliens ?
[JTable] empecher l'editionempecher la selection des images
Empecher le replacement des components d'une JFrameUtilisation des composants Indy 9 sous C++ Builder
empecher fermeture d'une fenetre dosComboBox : empêcher toute saisie
Comment télécharger tout les fichiers d'un dossier avec le IdHTTP ?Composant Indy
Plus de sujets relatifs à : Indy : idhttp empecher que ça freeze !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR