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.
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.
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 ?
Je sais que je fais ça dans mon programme :
http://www.developpez.net/forums/viewtopic.php?t=479694
ça a peut etre un lien ?
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)
Bon courage !
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;
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 :
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
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;
Bloon
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;
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
Google + developpez +
"programmation objet delphi"
et je pense que tu trouveras des liens interessants
Oui c est ce que je fais en attendant d'avoir une réponse.
Je vous remercie Tous .
Bon developpement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager