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 :

Utilisé un type personnalisé d'une unité dans une autre unité


Sujet :

Langage Delphi

  1. #1
    Membre actif Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Points : 201
    Points
    201
    Par défaut Utilisé un type personnalisé d'une unité dans une autre unité
    Salut,
    j'ai un problème tout con qui me gène et je ne sait pas comment m'en dépatouiller : je déclare mon enregistrement dans une unité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    type TParametres = record
          RunAtStart,
          BlokWithPass : boolean;
          Pass : string;
          Touches : TStrings;
        end;
    et je veux réutiliser ce même enregistrement dans une autre unité mais sa me met : "identificateur non déclaré : 'TParametres' " quand je défini une variable de ce type...
    C'est normal ou pas ? j'ai oublié de faire quelque chose ?
    Silk

  2. #2
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    ajoute l'unité qui contient ton Tparametres dans la clauses Uses de celle qui doit l'utiliser.

  3. #3
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Il faut
    1. que ton type soit défini dans ton unité xxx dans la partie INTERFACE
    2. que tu déclares dans la clause use de ton unité yyy, l'unité xxx
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  4. #4
    Membre actif Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Points : 201
    Points
    201
    Par défaut
    les deux unité sont bien respectivement dans leur clause uses et mon type est défini dans ma partie interface de mon unité.
    Si sa peu aider mon type est déclaré dans une unité sans form mais sa ne devrait pas etre genant non ?

    le code de mon unité :
    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
    25
    26
    27
    28
    29
     
    unit URegistre;
     
    interface
     
    uses Windows,registry,SysUtils,classes;
     
    type TParametres = record
          RunAtStart,
          BlokWithPass : boolean;
          Pass : string;
          Touches : TStrings;
        end;
     
     
    Function WriteRegistre(Parametres : TParametres):boolean;
    Function ReadRegistre : TParametres;
    Function VerifyPassword(Pass : string):boolean;
    procedure RegWriteRunApp(Path: string);
    Function DeleteRunApp : boolean;
    Function ClearRegistry : boolean;
     
     
     
    implementation
     
    uses UBlok, Uparam;
     
    ...
    Uparam est mon unité avec laquelle je veu utiliser mon record
    Silk

  5. #5
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    C'est l'inverse !
    il faut mettre use URegistre dans ton unité UParam...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  6. #6
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    au vue des noms d'unités, je mettrais le code ci-dessous dans Uparam


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    type TParametres = record
          RunAtStart,
          BlokWithPass : boolean;
          Pass : string;
          Touches : TStrings;
        end;
    et dans la clauses Uses de la partie interface de Uregistre, j'ajouterais Uparam.

  7. #7
    Membre actif Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Points : 201
    Points
    201
    Par défaut
    j'ai déjà essayé est sa me donne pareil pour tout ce qui utilise Tparametres mais dans UResgistre au lieu de Uparam
    Silk

  8. #8
    Membre actif Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Points : 201
    Points
    201
    Par défaut
    ah c'est bon j'ai réussi il faut mettre l'unité dans les uses de l'interface au lieu de l'implementation ! moi je croyait que sa revenait au même

    merci
    Silk

  9. #9
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    tu mets dans Interface si tu as besoin de connaitre la déclaration dans la partie interface (pour simplifier = si tu utilise le type comme propriété ou paramètres d'une méthode des classes de l'unité) et dans implementation si
    ca te sert seulement dans le code des procédures ou fonctions

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    UnitA;
     
    Interface 
     
    uses Uparam;
     ...
      private
         fonction toto(value : tparam);   //tparam doit etre connu
     
      ...


    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
     
    UnitA;
     
    Interface 
     
     ...
      private
         fonction toto;   
     
      ...
     
    implementation
     
    uses Uparam
     
    fonction toto;
      var value : Tparam;
    ...

  10. #10
    Membre actif Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Points : 201
    Points
    201
    Par défaut
    j'asseyerais de m'en souvenir

    merci pour vos réponses
    Silk

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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