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

Langage Delphi Discussion :

Erreur Abstraite


Sujet :

Langage Delphi

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut Erreur Abstraite
    J'ai mon projet qui me fait une Erreur Abstraite.
    Ca veut dire quoi ?
    Comment je peux savoir de quelle partie de mon code cela vient ?

    Merci d avance.

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    A Priori
    Il y a un probleme dans les héritages de tes classes.
    Définition d'un méthode déclarée comme abstraite ?

  3. #3
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Oula ..............euhhhh

    Je sais pas !!!!

  4. #4
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Je sais que je fais ça dans mon programme :

    http://www.developpez.net/forums/viewtopic.php?t=479694

    ça a peut etre un lien ?

  5. #5
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    peut-être,

    il faudrait la définition totale des classes pere et fils

    ainsi que le messages d'erreur exacte reporté par delphi.

    Est-ce que tu as des avertissements du compilo ?
    Est-ce que l'erreur est au moment de l'execution ?

    Si c'est le cas, ce code est un exemple de ce qu'il faut pas faire:
    Meme s'il passe au compilo (mais il Delphi génère un warning)
    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
    type
        TA = class( TObject )
          procedure UneMethode; virtual;
        end;
     
        TB = class( TA )
          procedure UneMethode; override; abstract;
        end;
     
     
    procedure TA.UneMethode;
    begin
         ShowMessage( 'Je suis dans A' );
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
       B : TB;
    begin
         B := TB.Create;
         B.UneMethode;
         B.Free;
    end;
    Bon courage !

  6. #6
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Une erreur abstraite c'est quand tu appelles une méthode abstraite sur un objet dont la classe n'implémente pas la méthode abstraite.

    Exemple :

    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
      TA = class
      public
        procedure proc_abstraite; virtual; abstract;
      end;
     
      TB = class(TA)
      public
        procedure proc_abstraite; override;
      end;
     
    var
      a : TA;
      b : TB;
    begin
      b := TB.Create;
      b.proc_abstraite; // c'est bon, proc_abstraite a été redéfinie
      b.Free;
      try
        a := TA.Create;
        a.proc_abstraite; // Erreur !
      finally
        a.Free;
      end;
    end;
    L'exemple ci-dessus provoquera un avertissement du compilateur car tu instancies explicitement un objet d'une classe abstraite. Cependant, si tu utilises des méta-classes, il n'y aura pas d'avertissement car la classe réelle de l'objet ne sera connue qu'à l'exécution, exemple :

    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
    type
      TClassA = class of TA;
     
    procedure test(classe : TClassA);
    begin
      with classe.Create do
      try
        proc_abstraite;
      finally
        Free;
      end;
    end;
     
    begin
      test(TB); // OK
      test(TA); // Erreur abstraite !
    end;
    Bloon

  7. #7
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Ca a l'air d etre un gros morceau, vous auriez pas un tutorial qui pourrait m'expliquer un peu plus en détail, notemment sur l'utilisation de virtual, abstract et override ??

    Merci

  8. #8
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Google + developpez +

    "programmation objet delphi"

    et je pense que tu trouveras des liens interessants

  9. #9
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Oui c est ce que je fais en attendant d'avoir une réponse.

    Je vous remercie Tous .

    Bon developpement.

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

Discussions similaires

  1. comment traquer une 'erreur abstraite' ?
    Par artmicro dans le forum Langage
    Réponses: 7
    Dernier message: 29/05/2013, 09h12
  2. Exception (erreur Abstraite)
    Par Jcpan dans le forum Langage
    Réponses: 3
    Dernier message: 22/10/2008, 13h59
  3. Réponses: 5
    Dernier message: 19/12/2006, 11h32
  4. [SAX] Erreur méthode abstraite
    Par kij dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 13/12/2006, 11h55
  5. messageBox 'erreur abstraite'
    Par Tchaill39 dans le forum Delphi
    Réponses: 4
    Dernier message: 08/11/2006, 17h09

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