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 :

Comment mettre virtual et override à la fois ?


Sujet :

Langage Delphi

  1. #1
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut Comment mettre virtual et override à la fois ?
    Salut tout le monde.

    J'ai une méthode d'une classe qui surcharge celle de sa mère donc je mets override, mais qui est surchargée dans sa fille, donc je mets virtual.

    J'ai essayé dans les 2 sens et il me dit :
    [Erreur] mrModeleFichier.pas( 28 ): Définition de champ non autorisée après des méthodes ou propriétés
    Qu'est ce qui cloche dans ce que je fais, est-ce du à ce que D7 ne le gère plus ?

    PS: pour info et pour ne pas croire que j'ai fait une autre erreur dans la classe, voici sa déclaration :
    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
      TmrModeleFichier = class(TmrModele)
      private
        FCheminFichier: string;
        FPremLigneImport: Integer;
        FLigneLibelle: Integer; // vaut -1 si aucune ligne de libellé
     
      protected
        procedure SetNom(const Value: string); override;
     
      public
        constructor Create(const aOwner: TComponent); overload;
        procedure Sauver(NomFichier: string); virtual; override;
     
      published
        property CheminFichier: string read FCheminFichier write FCheminFichier;
        property PremLigneImport: Integer read FPremLigneImport write FPremLigneImport;
        property LigneLibelle: Integer read FLigneLibelle write FLigneLibelle;
     
      end;
    Merci d'avance, parce que la je tourne en rond.[/url]

  2. #2
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Heuu personelement j'ai jamais mis les 2.

    Une fois que la methode a ete declaré Virtual, elle peut etre surchargée dans toutes ses filles et ses petites filles, etc .....

    Enfin c'est a confirmer mais ca ne m'a jamais posé de problemes.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  3. #3
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut
    OK dac, donc je ne mets pas de override, pourtant sur ce même forum, on m'a conseillé de toujours mettre override quand on surcharge une méthode car cela pouvait entrainer des fonctionnements bizarre sans.

    N'ayant pas plus d'infos sur la questions et n'en trouvant pas, j'ai voulu mettre les 2. Puisque tu ne le fais pas et que ça n'a pas dû te poser de pb je vais faire de même.

    Merci.

    PS : si qqn avait plus de précisions sur le fait de mettre ou non override, ce serrait sympa de les donner.

  4. #4
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Bha justement c'est l'inverse qu'il faut faire ;pp

    C'est virtual qu'il ne vaut pas mettre ..... Mais uniquement Specifier Override dans toutes les descendantes si elles doivent etre resurchargees.

    Le virtual n'est la qu'une fois pour definir la capacite d'une methode a pouvoir etre surchargee.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  5. #5
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut
    OK dac, je comprends mieux maintenant, merci.

    C'est bizarre pourtant parce que j'avais un peu regardé les sources des composants et j'avais l'impression qu'ils remettaient virtual sauf pour la dernière fille qu'ils mettaient override.

    J'ai dû avoir la berlue.

    Merci ++

  6. #6
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Je fait des tests et te dis ca.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  7. #7
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Oki ca marche pour moi.
    Hierarchie de 3 classe surchargeant a tour de roles la methode de leur mere.
    La 1e est Virtual, les 2 autres Override et l'appel a inherited dans ces methodes execute bien les 3 fonctions (de chaques classes) pour la plus eloignee de la hierarchie.


    J'ai pas noté d'erreur particuliere.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  8. #8
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut
    OK parfait, merci pour tout, maintenant au moins je pourrais mieux programmer, plus propre sans peur d'erreur (enfin moins) grâce à toi.

    ++

  9. #9
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Oki ;p

    Et pense au Tag "Resolu"
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/08/2014, 19h14
  2. Comment mettre le curseur d'un Memo sur le Canvas d'une Form ?
    Par julie20 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/08/2003, 13h24
  3. Réponses: 2
    Dernier message: 19/08/2003, 15h45
  4. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 22h01
  5. Comment mettre plusieurs objets ds un composant ?
    Par Fleury dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/05/2003, 17h34

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