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ébutant] probleme de déclarations


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 74
    Points
    74
    Par défaut [débutant] probleme de déclarations
    Bonjour à tous,

    Je commence juste la programmation sous delphi, avant je programmé en C.
    Je n'arrive pas à déclarer une variable qui est definie dans toutes les unités!!! Comment fait-on?

    Je suis désolé de vous poser une question aussi bete mais la je suis bloqué pourtant j'ai chercher une reponse dans les cours et tutoriels sans grand succes.

    J'ai pas de problème avec la programmation evenementielle (si clique sur un bouton sa affiche une autre Form, code...).
    Ce que je cherche à faire c'est affecter une valeur à une variable dans une unité et que toutes les unités peuvent s'en servir pour un traitement.
    En C c'est des variables globales mais sous delphi? je les mets ou? dans le .dpr? est ce que l'on peut faire l'analogie entre le C et Delphi (Unité en delphi equivaut à une fonction en C?).

    Merci et désolé de vous poser une question si bête

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Bonjour,

    Tu déclares ta variable dans l'interface d'une unité (perso, je crée toujours une unite que je nomme UCommun, dans laquelle je place toute mes variables, constantes et class communes à tout le projet), ensuite pour faire référence à ces variables tu places un Uses MonUnité dans toutes les unités du projet.

    Si tu as créé ton unité par "Fichier/Nouveau/Unite" dans ton projet, tu peux faire, pour chaque unité "Fichier/Utiliser l'unité" (enfin en Delphi 5, les menus ont peut-être changés dans les versions ultérieures)

    Voila.

    Bon courage

    Pascal

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Pour ca, le mieux est de créer une unité commune et de faire appel a celle-ci dans toutes tes unités.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut
    Bonjour.

    Il faut que tu fasse une référence de l'unité maître depuis les autres unités.

    La partie "interface" d'une unite en pascal est l'équivalent du fichier H en c. Cependant attention, les référence croisées sont interdites en pascal. Mais...

    Procède comme suit, c'est un exemple.

    Considérent que l'unité 1 est maitresse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Unit Unit1;
     
    interface
     
    uses windows, sysutils;
     
    Var
        MaVariableGlobale : Integer;
     
    implementation
    Dans l'unité 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Unit Unit2;
     
    interface
     
    uses windows, sysutils;
     
    implementation
     
    uses Unit1;
    // Toutes les variables, types et constantes déclarées dans la 
    // partie interface de l'unité 1 seront connus et accessibles depuis l'unité 2.
    Si l'unité1 a besoin de connaitre les autres unités du programme, il faut coder ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Unit Unit1;
     
    interface
     
    uses windows, sysutils, Unit2, Unit3;
     
    Var
        MaVariableGlobale : Integer;
     
    implementation
    Il n'y a pas de référence croisée, mais possibilité d'échange de données. Il est clair de dans cette dernière partie de code,toutes les variables, types et constantes déclarées dans les parties interface des unité 2 et 3 seront connus et accessibles depuis l'unité 1.

    Voila, c'est la base.

    A+
    Rien n'est moins sur que l'incertain : Pierre DAC

  5. #5
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut
    malatar a écrit :
    Pour ca, le mieux est de créer une unité commune et de faire appel a celle-ci dans toutes tes unités.
    Après 20 ans d'expérience, je déconseille fortement cette méthode. C'est la plus mauvaise car on va vite vers de très grosses unités de variable, avec risque de confusions et d'interaction.
    Ma méthode oblige le développeur à une grande rigueur d'écriture, indispensable pour un débutant.
    Rien n'est moins sur que l'incertain : Pierre DAC

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par Philippe Gormand
    malatar a écrit :


    Après 20 ans d'expérience, je déconseille fortement cette méthode. C'est la plus mauvaise car on va vite vers de très grosses unités de variable, avec risque de confusions et d'interaction.
    Ma méthode oblige le développeur à une grande rigueur d'écriture, indispensable pour un débutant.
    Tu as peut être mal compris ce que je voulais lui dire, car tu fais exactement ce que je lui dis de faire dans tes exemples.

    Tu as une unité avec la variable (Unit1) et tu fais appel à elle dans les autres unités (unit2)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 74
    Points
    74
    Par défaut
    merci a tous,
    j'ai utilisé l'exemple que philippe Gormand a proposé et ca marche bien.

    a plus

  8. #8
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut
    Pardon ! Ce que je voulais dire, c'est d'éviter de regrouper l'ensemble des variables etc... globales au programme dans une seule unité. Dans l'exemple que je donne, je précise bien de l'unité maîtresse. Celle par exemple qui contient la fiche principale.

    Ce que je conseille, c'est que chaque unité contienne ses propres variables, toutes locales à l'unité (déclarées dans la partie implémentation) sauf celles devront être accessibles par d'autres unités.

    C'est parce que Anthony17 se dit débutant, que donne toutes ces précisions.
    Rien n'est moins sur que l'incertain : Pierre DAC

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Je crois qu'on est tous d'accord

    Une unité qui ne regroupe QUE les variables utilisées par TOUTES les unites <<Fiches>> du programme. Et que chaque Unité ai ses propres variables qui lui sont propres.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 74
    Points
    74
    Par défaut
    merci de vos explications c'est comme ca que je vais faire dès à present.

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

Discussions similaires

  1. [MFC] débutant probleme appel de fonction
    Par Gloubi99 dans le forum MFC
    Réponses: 9
    Dernier message: 30/08/2005, 15h40
  2. [Débutant] Probleme d'incrémentation d'une variable
    Par sakuragikan dans le forum ASP
    Réponses: 2
    Dernier message: 25/08/2005, 13h11
  3. [débutant] Probleme avec switch et héritage
    Par durk dans le forum Langage
    Réponses: 2
    Dernier message: 21/04/2005, 09h48
  4. [C#][débutant] Probleme avec un case
    Par Le Basque dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/01/2005, 12h45
  5. [débutante]Probleme de liens image dans JSP/Servlet
    Par celine31 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 24/11/2004, 15h51

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