Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal > Free Pascal
Free Pascal Le compilateur Pascal multiplateforme
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 27/02/2012, 01h21   #1
Neuromancien2
Membre confirmé
 
Inscription : mai 2002
Messages : 565
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 565
Points : 279
Points : 279
Par défaut EAbstractError : Abstract method called

Bonjour,

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

Code :
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 :
Citation:
EAbstractError : Abstract method called
Neuromancien2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2012, 23h17   #2
Neuromancien2
Membre confirmé
 
Inscription : mai 2002
Messages : 565
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 565
Points : 279
Points : 279
J'ai la réponse : il manque le override de TTestEvent.Execute:

procedure Execute; override;
Neuromancien2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h14.


 
 
 
 
Partenaires

Hébergement Web