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 :

Déclaration d'unité dans la partie INTERFACE ou dans la partie IMPLEMENTATION : quelle est la différence ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut Déclaration d'unité dans la partie INTERFACE ou dans la partie IMPLEMENTATION : quelle est la différence ?
    quell est la différence quant je met l'unité Mydata ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    unit buyer;
    interface
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.Mask,
      Vcl.DBCtrls, Vcl.ExtCtrls,Mydata;
    type
    ou quand je met MYDATA dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    implementation
    
    {$R *.dfm}
    
    uses Mydata

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 093
    Par défaut
    Je ne pourrais pas être extrêmement précis


    Programmes et unités (Delphi) > Syntaxe et structure d'unité > Références d'unité multiples et indirectes



    Mais le pascal est compilé en deux passes,
    Il prend chaque fichier et compile la partie interface et les liens entres
    puis recommence avec la partie implémentation

    Cela permet de lier A avec B qui est lui lié avec A (sans référence circulaire), l'un dans l'interface, l'un dans l'implémentation

    Par exemple
    B a besoin de A pour compiler sa partie implémentation, le uses ne doit être que dans cette section
    A a besoin de B pour des types utilisés dans la partie interface, le uses est forcément dans la partie interface
    Par contre A et B ne peuvent pas se référencer mutuellement dans interface (pour ça, faut soit déplacer des classes d'un fichier à l'autre ou faire une unit C)

    Mettre une unité dans l'un ou l'autre peut vaguement changer le comportement de ton programme à l'initialization et à la finalization mais sinon c'est plus un problème de compilation qu'autre chose
    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
    Invité
    Invité(e)
    Par défaut
    Exactement, "normalement" si tu as pas besoin de ton uses dans la partie interface il faut le mettre dans la partie implementation. Cela évite des références circulaire entre tes uses et permet d'avoir des listes de uses plus compréhensible

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/09/2011, 23h53
  2. Réponses: 11
    Dernier message: 08/06/2011, 11h33
  3. Réponses: 2
    Dernier message: 09/12/2008, 09h57
  4. Réponses: 13
    Dernier message: 25/03/2005, 11h00
  5. Réponses: 3
    Dernier message: 09/02/2003, 01h09

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