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.