IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Implémenter le timer dans mon unité MyHttp_U


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut Implémenter le timer dans mon unité MyHttp_U
    Bonjour à tous,

    je suis en train de reprendre le code d'une unité développée au sein de ma boite (voir en attach pour l'unité) et j'ai vu que l'ancien développeur avait commencé à implémenter un Timer, sauf que je ne sais pas quoi faire exactement dans la partie "Ce qu'il faut faire"

    En fait d'après ce que je comprends, il a jouté des fonction/Procédure
    au composant HTTPCli de ICS.

    Quelqu'un pourrait-il me dire si :
    - Ce qui est écrit semble correct ?
    - Ce qu'il faut mettre pour avoir un Abort du HttpCli ?

    PS : j'ai aussi posté ce message sur un autre forum car c'est un peu urgent comme implémentation. Biensûr je ferai part des deux côtés des réponses que j'obtiens.

    Merci à tous pour vos conseils
    Amicalement,
    Bruno

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    unit MyHttp_U;
     
    interface
     
    uses
      Classes, HttpProt, ExtCtrls;
     
    const
      // Nombre maximum de changement d'url par le champs LOCATION
      // (Si infini mettre un nombre inferieur a 0)
      DEFAULT_RELOCATION = 3;
     
    type
      TMyHttp = class(THttpCli)
      private { Déclarations privées }
        FTrace: TStringList;
        FData: TObject;
        FRelocation: Integer;
        FOnLocationChange: TNotifyEvent;
    //    FTimeoutTimer : TTimer;
    //    procedure TimeoutTimerTimer(Sender : TObject);
        procedure DoLocationChange(Sender: TObject);
      protected { Déclarations protégées }
        property FollowRelocation;
      public { Déclarations publiques }
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
      published { Déclarations publiées }
        property Relocation: Integer read FRelocation write FRelocation default DEFAULT_RELOCATION;
     
        property OnLocationChange: TNotifyEvent read FOnLocationChange write FOnLocationChange;
     
        property Trace: TStringList read FTrace;
        property Data: TObject read FData write FData;
      end;
     
    implementation
     
    { TMyHttp }
     
    constructor TMyHttp.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      FollowRelocation:=False;
      FRelocation:=DEFAULT_RELOCATION;
      FTrace:=TStringList.Create;
    (*
      FTimeoutTimer := TTimer.Create(Self);
      FTimeoutTimer.Interval := 30000;
      FTimeoutTimer.OnTimer := TimeoutTimerTimer;
    *)
      inherited OnLocationChange:=DoLocationChange;
    end; {* cons .Create *}
     
    destructor TMyHttp.Destroy;
    begin
      FTrace.Free;
      inherited Destroy;
    end; {* dest .Destroy *}
     
    (*
    procedure TMyHttp.TimeOutTimerTimer(Sender : TObject);
    begin
         // Ce qu'il faut faire  :-) 
    end;
    *)
     
    procedure TMyHttp.DoLocationChange(Sender: TObject);
    begin
      FTrace.Add(inherited Location);
      if (Relocation=0) or (Relocation>0) and (Trace.Count>Relocation) then
        Abort;
      if Assigned(FOnLocationChange) then
        FOnLocationChange(Sender);
    end; {* proc .DoLocationChange *}
     
     
    end.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Bonjour,

    j'ai eu quelques réponses sur un newsgroup qui m'ont fait un peu mieux comprendre.

    Voici ce qui a été dit :

    François P. a écrit :
    > Quelqu'un pourrait-il me dire si :
    > > - Ce qui est écrit semble correct ?

    On dirait.

    > > - Ce qu'il faut mettre pour avoir un Abort du HttpCli ?

    Le timer a l'air d'être là pour gérer un timeout. Il faut donc démarrer le
    timer au moment où on commence une commande - en surchargeant SendRequest -
    et l'annuler au moment où l'on reçoit la réponse - en surchargeant
    TriggerRequestDone.

    Dans l'événement OnTimer, on annule la requête en cours en invoquant Abort.
    Bon je vais abuser un peu mais j'aimerai bien avoir de l'aide pour "surcharger" SendRequest et TriggerRequestDone ??

    Comment fait-on cela ?
    Dois-je le faire dans mon unité?


    Merci pour aide,

Discussions similaires

  1. [Débutant] insérer un timer dans mon projet
    Par toutoune95800 dans le forum VB.NET
    Réponses: 4
    Dernier message: 02/04/2012, 21h39
  2. [ICS HTTPCli] Implémenter un TimeOut dans mon appli
    Par Bruno13 dans le forum Delphi
    Réponses: 3
    Dernier message: 20/12/2006, 21h31
  3. Réponses: 8
    Dernier message: 29/06/2006, 14h22
  4. Bug dans mon timer
    Par FredKéKé dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 25/01/2006, 15h27
  5. Réponses: 5
    Dernier message: 25/04/2004, 00h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo