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

 Delphi Discussion :

Deux classe portant le meme nom dans deux unités differentes


Sujet :

Delphi

  1. #1
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut Deux classe portant le meme nom dans deux unités differentes
    Bonjour
    En déclarant une classe portant le meme nom dans deux unités differentes 'unit2 ,unit3), et fesant appel a cette classe d'une 3 unités(unit1), Delphi crée l'instance de la classe contenu dans unit3.

    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
    
    unit Unit2;
    
    interface
    uses dialogs;
    
    type
    tobjet1 = class
    Hlm : string;
    procedure salut ;
    
    protected
    fcouleurpref : string ;
    public
    constructor create ;
    destructor destroy ;
    property couleurpref : string read fcouleurpref write fcouleurpref ;
    end;
    implementation

    ///////////////////

    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
    
    unit Unit3;
    
    interface
    uses dialogs;
    
    type
    tobjet1 = class
    Hlm : string;
    procedure salut ;
    
    protected
    fcouleurpref : string ;
    public
    constructor create ;
    destructor destroy ;
    property macouleur : string read fcouleurpref write fcouleurpref ;
    end;
    implementation
    Normalement il devait y avoir exception ou conflit.

    Merci de M'éclairer

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 550
    Points : 25 120
    Points
    25 120
    Par défaut
    On a deux fois l'Unit2 et pas Unit3.


    Et sinon Delphi, utilise une seule déclaration, ça dépend l'ordre des uses, d'abord ceux dans la partie implementation, puis ceux dans interface, après je ne sais plus dans quel ordre, si tu veux être sur ajoute le nom de l'unité devant la classe genre "Unit2.TObject1", et le mieux étant de l'éviter ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    Merci

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Parmi une lise de uses, l'ordre de recherche se fait du dernier au premier. Donc si tes uses sont uses Unit2, Unit3; la recherche se fera d'abord dans Unit3.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 550
    Points : 25 120
    Points
    25 120
    Par défaut
    Merci, SJRD, j'ai longtemps pensé que c'était l'inverse, mais un récent problème à ce sujet, m'a fait pensé que c'etait du dernier au premier, et tu le confirmes, ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 945
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 945
    Points : 5 659
    Points
    5 659
    Par défaut
    Hie,

    La première question à se poser est :

    Pourquoi donner le même nom à 2 classes, même dans des unités différentes ?
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    juste un étude de cas

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    tu peut te servir de cette methode pour "Hacker" un composant

    on peut s'en servir par exemple pour overrider le CreateEditor du stringGrid
    plutôt que de recréer un composant et le mettre dans la palette delphi
    et aussi pour ne pas réécrire toutes ton appli tu trompe délibérément
    le compilateur

    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
     
    TStringGrid = Class(Grids.TStringGrid)
        function CreateEditor: TInplaceEdit; Override;
     end; 
     
    ...
    Type
      TFooClass = class(TControl);
     
    function TStringGrid.CreateEditor: TInplaceEdit;
    var
      Scaling : Boolean;
    begin
      result := Inherited CreateEditor;
      Scaling := Screen.Width <= 1024;
      if Scaling and (Screen.PixelsPerInch<>120) then
      begin
        TFooClass(result).Font.Height := (Font.Height div -13) * TFooClass(result).Font.Height;
      end;
      TFooClass(result).Font.Color := ClNavy;
    end;
    mais c'est juste une figure de style

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/06/2011, 16h04
  2. Probleme d'une meme declaration dans deux classes
    Par zouari.rami dans le forum Débuter
    Réponses: 1
    Dernier message: 04/12/2010, 11h25
  3. Réponses: 4
    Dernier message: 10/10/2007, 15h31
  4. [MySQL] Récuéprer deux champs au meme nom dans un Innerjoin
    Par easyjava dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/10/2006, 12h25
  5. [MySQL] Sélectionner deux champs du meme nom dans deux tables
    Par Msieurduss dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 14/06/2006, 22h54

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