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

Free Pascal Discussion :

EAbstractError : Abstract method called [Free Pascal]


Sujet :

Free Pascal

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    638
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 638
    Points : 408
    Points
    408
    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 : 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

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    638
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 638
    Points : 408
    Points
    408
    Par défaut
    J'ai la réponse : il manque le override de TTestEvent.Execute:

    procedure Execute; override;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] Fatal error: Non-abstract method function() must contain body
    Par absot dans le forum Langage
    Réponses: 9
    Dernier message: 02/01/2012, 20h48
  2. "pure method called" au test d'un wrapper boost::thread simple
    Par kidpaddle2 dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 02/07/2010, 08h36
  3. Pb retour methode call.invoke
    Par tigerpob79 dans le forum Services Web
    Réponses: 2
    Dernier message: 06/11/2008, 17h21
  4. Réponses: 4
    Dernier message: 17/05/2007, 16h47

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