Bonjour,

Je mets en place un système d'événéments avec une file qui traite les différents ordres :

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
TEvent = class
        { Type }
        FType : string;
        { Description }
        FDescription : string;
        { Execute order }
        procedure Execute; virtual; abstract;
    end;
 
    { TEventQueue }
 
    TEventQueue = class
        { Queue }
        FQueue : TList;
        { Class constructor }
        constructor Create;
        { Add event }
        procedure AddEvent(PEvent : TEvent);
        { Process each event in the queue }
        procedure Execute;
    end;
 
TTestEvent = class(TEvent)
     constructor Create;
     procedure Execute;
end;
 
var
    TestEvent : TTestEvent;
    EventQueue : TEventQueue;
 
constructor TTestEvent.Create;
begin
    FType := 'TestEvent';
    FDescription := 'Evénement de test';
end;
 
procedure TTestEvent.Execute;
begin
    writeln('Un événément s''est produit : ' + FType + ' : '+ FDescription);
end;
 
initialization
    { #1 Créer EventQueue }
    EventQueue := TEventQueue.Create;
 
    { #2 Ajouter un événement }
    EventQueue.AddEvent(TTestEvent.Create);
    EventQueue.Execute;
 
    { #3 Detruire Settings }
    FreeAndNil(EventQueue);
Mais l'exécution de l'événement donne une erreur :
EAbstractError : Abstract method called